html游戏开发Rabbit Escape:完成游戏【DOC精选】.doc

html游戏开发Rabbit Escape:完成游戏【DOC精选】.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
html5游戏开发Rabbit Escape:完成游戏 一、前言 上一篇教程中我们已经解决了游戏中的核心问题如何实现兔子的寻路移动。但是我们还没有添加游戏的成功失败判断和积分的管理,这次教程我们来完善它。 二、GameCtrl类中添加游戏的成功和失败判定,积分管理 关于游戏的成功和失败判定,首先我们需要在头文件中添加相应的成员函数。 1 2 3 4 5 public: ????//判断成功 ????bool?judgeSuccess(); ????//判断失败 ????bool?judgeFail(); 关于游戏成功,玩过神经猫的童鞋都应该知道,只要将猫围住就算赢了,同比我们的游戏,只要将兔子围住就可以了。 1 2 3 4 5 6 7 8 9 10 11 bool?GameCtrl::judgeSuccess(){ ????//获取当前可遍历的方向 ????vectorVec*?moveDirs; ????this-getCurDirs(moveDirs,m_rabbitPos); ????for?(auto?it:moveDirs)?{ ????????if?(!m_gameMap[m_rabbitPos.ver+it-ver][m_rabbitPos.hor+it-hor]-isObt){ ????????????return?false; ????????} ????} ????return?true; } 实现起来的话,遍历当前兔子可以移动到的位置是不是都是障碍就行了,如果都是说明成功了,否则则没有成功。 关于游戏失败,只要当兔子此时的位置只要到达任意一条边界边上,则就说明兔子成功的逃脱了,游戏也失败了。 1 2 3 4 5 6 bool?GameCtrl::judgeFail(){ ????if?(m_rabbitPos.hor==0||m_rabbitPos.ver==0||m_rabbitPos.hor==NUM_MAPROWANDCOW-1||m_rabbitPos.ver==NUM_MAPROWANDCOW-1)?{ ????????return??true; ????} ????return??false; } ok,我们已经添加了完了成功和失败的判定,现在我们来添加积分的管理。 分析一下,在这个游戏中积分是什么,其实就是兔子移动的次数(step)。如果你能在兔子移动越少的情况下将兔子围住,当然就说明你越牛X。 在头文件中添加响应的成员变量和接口函数: 1 2 3 4 5 6 //当前移动步数 ????int?m_step; ?? public: ????//得到当前移动步数 ????int??getStep(){return?m_step;}; 什么时候step增加呢?肯定是兔子移动的时候啊,我们修改下rabbitMove函数: 1 2 3 4 5 6 7 8 9 10 11 12 13 int?GameCtrl::rabbitMove()?{ ????Dir?d?=?this-getRabbitMoveDir(); ????if?(Dir::none!=d)?{ ????????//增加移动次数 ????????m_step++; ????????m_rabbitPos=(*m_moveVec[(int)d])+m_rabbitPos; ????????return?m_rabbitPos.ver*NUM_MAPROWANDCOW+m_rabbitPos.hor; ????} ????else{ ????????return?VAL_MAX; ????} ?? } 三、HelloWorld中添加游戏成功和失败的部分 首先修改之前,我们需要重新梳理一下游戏的逻辑流程。在添加了成功和失败判定部分后,我们游戏的逻辑流程应该是变成这样的: 在每次触摸响应后: 1.判断是否当前状态已经失败,如果是,则xxx 2.添加障碍 3.判断是否当前状态已经成功,如果是,则xxx 4.兔子移动 (游戏的逻辑流程是非常重要的,如果错了,那么整个游戏的运行方式将会发生很大的变化。) 有了上面的基础我们来修改一下触摸响应函数,这里假设成功和失败后先让它们显示MessageBox然后重新加载场景。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 bool?HelloWorld::onTouchBeganCallBack(Touch?*t,?Event*?event){ ????for?(auto?it?=m_pNodes_obstacle.begin();it!=m_pNodes_obsta

文档评论(0)

taotao0b + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档