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

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


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




     Step1: 素材准备篇



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


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


准备3:准备一份音频文件作为打地鼠背景音乐

      


 

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、设置屏幕初始化动作



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


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



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




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




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


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


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


class="video_iframe" height="502.5" width="670" frameborder="0" data-src="https://v.qq.com/iframe/preview.html?vid=i0193ecfw4l&width=500&height=375&auto=0" allowfullscreen="" src="http://v.qq.com/iframe/player.html?vid=i0193ecfw4l&width=670&height=502.5&auto=0" scrolling="no" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; display: block; z-index: 1; width: 670px !important; height: 502.5px !important; overflow: hidden;">


  • 设计地鼠隐藏过程




  • 将传值进来的地鼠显示状态设置为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~~~~感兴趣的云朵们可以研究一下将分数存储在网络服务器上,实现排行榜功能~!啦啦啦!

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


  • 31
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值