html5游戏开发rabbitescape:完成游戏

html5游戏开发rabbitescape:完成游戏

ID:34416789

大小:111.00 KB

页数:15页

时间:2019-03-05

html5游戏开发rabbitescape:完成游戏_第1页
html5游戏开发rabbitescape:完成游戏_第2页
html5游戏开发rabbitescape:完成游戏_第3页
html5游戏开发rabbitescape:完成游戏_第4页
html5游戏开发rabbitescape:完成游戏_第5页
资源描述:

《html5游戏开发rabbitescape:完成游戏》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、html5游戏开发RabbitEscape:完成游戏一、前言上一篇教程中我们已经解决了游戏中的核心问题如何实现兔子的寻路移动。但是我们还没有添加游戏的成功失败判断和积分的管理,这次教程我们来完善它。二、GameCtrl类中添加游戏的成功和失败判定,积分管理关于游戏的成功和失败判定,首先我们需要在头文件中添加相应的成员函数。12345public:    //判断成功    bool judgeSuccess();    //判断失败    bool judgeFail();关于游戏成功,玩过神经猫的童鞋都应该知道,只要将猫围住

2、就算赢了,同比我们的游戏,只要将兔子围住就可以了。12bool GameCtrl::judgeSuccess(){    //获取当前可遍历的方向34567891011    vector moveDirs;    this->getCurDirs(moveDirs,m_rabbitPos);    for (auto it:moveDirs) {        if (!m_gameMap[m_rabbitPos.ver+it->ver][m_rabbitPos.hor+it->hor]->isObt){    

3、        return false;        }    }    return true;}实现起来的话,遍历当前兔子可以移动到的位置是不是都是障碍就行了,如果都是说明成功了,否则则没有成功。关于游戏失败,只要当兔子此时的位置只要到达任意一条边界边上,则就说明兔子成功的逃脱了,游戏也失败了。123456bool GameCtrl::judgeFail(){    if (m_rabbitPos.hor==0

4、

5、m_rabbitPos.ver==0

6、

7、m_rabbitPos.hor==NUM_MAPROWANDCOW

8、-1

9、

10、m_rabbitPos.ver==NUM_MAPROWANDCOW-1) {        return  true;    }    return  false;}ok,我们已经添加了完了成功和失败的判定,现在我们来添加积分的管理。分析一下,在这个游戏中积分是什么,其实就是兔子移动的次数(step)。如果你能在兔子移动越少的情况下将兔子围住,当然就说明你越牛X。在头文件中添加响应的成员变量和接口函数:123456//当前移动步数    int m_step;  public:    //得到当前移动步数    int

11、  getStep(){return m_step;};什么时候step增加呢?肯定是兔子移动的时候啊,我们修改下rabbitMove函数:123int GameCtrl::rabbitMove() {    Dir d = this->getRabbitMoveDir();    if (Dir::none!=d) {45678910111213        //增加移动次数        m_step++;        m_rabbitPos=(*m_moveVec[(int)d])+m_rabbitPos;     

12、   return m_rabbitPos.ver*NUM_MAPROWANDCOW+m_rabbitPos.hor;    }    else{        return VAL_MAX;    }  }三、HelloWorld中添加游戏成功和失败的部分首先修改之前,我们需要重新梳理一下游戏的逻辑流程。在添加了成功和失败判定部分后,我们游戏的逻辑流程应该是变成这样的:在每次触摸响应后:1.判断是否当前状态已经失败,如果是,则xxx2.添加障碍3.判断是否当前状态已经成功,如果是,则xxx4.兔子移动(游戏的逻辑流程是非常重

13、要的,如果错了,那么整个游戏的运行方式将会发生很大的变化。)有了上面的基础我们来修改一下触摸响应函数,这里假设成功和失败后先让它们显示MessageBox然后重新加载场景。12345678910111213bool HelloWorld::onTouchBeganCallBack(Touch *t, Event* event){    for (auto it =m_pNodes_obstacle.begin();it!=m_pNodes_obstacle.end() ; it++) {        if((*it)->ge

14、tBoundingBox().containsPoint(t->getLocation())&&(!(*it)->isVisible())){                          //判断是否失败            if (m_ctrl->judgeFail

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。