码迷,mamicode.com
首页 > 其他好文 > 详细

手把手教你如何设计打地鼠游戏(技术教程)

时间:2016-04-29 19:17:32      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

 写在前面:这是一篇冗长而专业的技术教程, 林子费劲功夫想让学习ComputerScience不辣么枯燥,着实花了好多时间呢?不信往下看嘛?!文末有惊喜哟!


        本App设计的功能包括:自带背景音乐;地鼠随机出现;计分计时,分数和剩余时间实时显示在屏幕上。




     Step1: 素材准备篇


技术分享
技术分享萝卜坑背景图一张(这张图是处理过的啦?云朵们看得出来哪里有手术痕迹吗?)

技术分享
技术分享三种Size地鼠图片各一张(为什么要准备不同Size呢?有图任性嘛?!!哈哈哈!注意是背景透明的png格式)


技术分享准备一份音频文件作为打地鼠背景音乐

      


 

Step2:界面设计篇


技术分享
技术分享

        

          拖拽一张画布到屏幕上,为画布设置指定的高度和宽度,我这里设置了宽350,高400。接着,拖拽9个图像精灵到画布上 ,将图像精灵分别放在背景图中有坑的位置。将第一排地鼠的图像设置为mouse1.png、第二排设置为mouse2.png,第三排设置为mouse3.png,之所以没有用到同一个图像,是为了获得视觉体验的真实性,第一排地鼠最大,越往后地鼠越小。 各个组件的具体设置详情见下图:技术分享技术分享技术分享                                                         

技术分享


问:组件的名称为什么又设中文又设英文的,好不伦不类啊!

答:呃~~我想说,全部英语你能看懂吗?技术分享





Step3: 逻辑设计篇(一起来烧脑,哟哟切克闹~~

       

  •  1、初始化全局变量

技术分享

  • mouselist为列表类型变量,用来存放9只地鼠

  • play为一个开关逻辑变量,初始化设置为false,当play按钮被按下设置其为true

  • score为数据类型变量,初识成绩为为0

  • endtime为数据类型变量,初识赋值60,单位为s,用来做游戏倒计时

  • music为一个开关逻辑变量,用来控制是否播放音乐



  •  2、定义过程initialize


技术分享
技术分享


  • 计时器要等到开始按钮被按下才启用

  • 开始按钮未被按下,将play设置为false

  • 背景音乐按钮未被按下,将music设置为false

  • 初始化score为0

  • 为列表变量mouselist初始化,相当于为列表赋值

  • 一开始想设置图像精灵全部不显示,因此,这里使用了一个循环,循环取列表中的图像精灵,将其显示状态设置为false,图像精灵通过索引值的方法来获得。而且这里用到了任意组件

  • 设置画布的画笔颜色为白色

  • 设置画布的线宽

  • 在背景图上画字“倒计时”,这里调用了“沿角度画字”这个方法,目的是让画出的字能够很好地显示在我们的背景图中

  • 在背景图上画字“分数”



  •  3、设置屏幕初始化动作

技术分享

问:这里为什么没有解释?


答:这么简单,还要解释?



  • 设计随机显示地鼠的过程


技术分享


  • 随机选择要显示的地鼠,这里同样用到了任意组件中的任意精灵的方法


技术分享


  • 任意组件的好处是我们不必为每一个组件设置重复的方法


问:任意精灵到底在辣里吗?我怎么找不到嘞?


答:就知道你们会问这个问题辣,幸好我早有准备技术分享以寻找图像精灵的显示状态这个过程为例




  • 设计地鼠隐藏过程


技术分享

  • 将传值进来的地鼠显示状态设置为false,也就是隐藏该地鼠

  • 将分数增加1分

  • 调用随机显示地鼠的过程

  • 该过程需要接收一个参数number,number为地鼠的序号



  • 设置精灵被触碰的动作


技术分享

  • 当精灵被触碰,即调用hidemouse这个过程,并把地鼠的序号作为参数传过去,由于任意精灵中没有精灵触碰事件,因此9个精灵分别要写相应的程序去处理。



  • 处理play按钮单击事件


技术分享


  •  将play开关设置为取反,即如果当前play为false,那么按下按钮则为true

        如果play为true,则将play按钮的显示文本设置为“暂停”,启动计时器计时

  • 否则,也就是play为false,则将play的显示文本设置为“开始”,停止计时器计时,并且显示警告信息“游戏暂停”,这个过程中play按钮充当了一个开关。




  • 处理音乐按钮单击事件


技术分享


  • 这里的music逻辑变量也相当于一个开关,通过判断music的真假来播放音乐。



  • 定义过程——“显示结果”


技术分享



  • 处理stop按钮单击事件


技术分享


  • 当按下停止按钮,进行判断,如果剩余时间大于0,说明游戏没有结束,因此提醒用户“时间还没到,是否确定退出游戏?”

  • 当用户选择退出,则停止计时器计时,停止音乐播放,显示最终成绩


  • 设置计时器计时


技术分享
技术分享


  • 每隔1S,剩余时间-1

  • 如果剩余时间为0,停止计时器计时,显示“时间到,游戏结束!”对话框;显示最后的结果,显示结果为一个单独的过程,将music、play、stop都设置为不启用

  • 如果时间没有到,就继续显示倒计时间和分数,这里在调用画字过程之前都用到了清除画布,原因是如果不清除画布,画布上会留下上一次的文字痕迹~~不懂?自己把清除画布功能去掉看看效果嘛?!



  • 设置退出按钮事件


技术分享

  • 直接关闭屏幕,退出程序






        至此本次教程Over~~~~感兴趣的云朵们可以研究一下将分数存储在网络服务器上,实现排行榜功能~!啦啦啦!

        写到这里云朵们可能想说:发个源码啦!可是我打死也不相信林子和云朵们的小船会说翻就翻~~~为了防止小船说翻就翻,呃,默默贡献源码~~

技术分享



云端微课坚持分享实用信息资讯和原创信息技术教程

技术分享


林子有话说:不说了,直接看图技术分享技术分享

技术分享



云端微课不做网络的搬运工

坚持分享实用信息资讯和原创信息技术教程

技术分享


手把手教你如何设计打地鼠游戏(技术教程)

标签:

原文地址:http://blog.csdn.net/linzi0/article/details/51233557

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!