小小菜之Cocos2d-x游戏开发旅程——项目实例:贪吃蛇(5)

终于到了最后的战役了。
前面我们已经让蛇可以到处跑,可以生长,可以吃食物。不过呢,虽然是它的“地盘”,也是有一定区域的,出了这个区域,它就会被宰掉。。。
现在我们就来对蛇有没有出这个区域作判定

由于是10*10的格子,那么行数比0小或者比10大,列数比0小或者比10大,就是出了这个区域,它就会挂掉。

//判断死亡
    if(head->row >= 10 || head->row < 0 || head->col >= 10 || head->col < 0)
    {
        SimpleAudioEngine::getInstance()->stopBackgroundMusic();
        SimpleAudioEngine::getInstance()->playEffect("gameover.mp3");
        GameOver();
    }

出了区域会死,在区域里它也不能吃掉自己,不然也会死
所以一旦头撞到了身体,就相当于自己咬到自己了

//撞身体死亡
    for(long i = allBody.size() - 1 ; i >= 0; i--)
    {
        auto nobody = allBody.at(i);
        if (head->row == nobody->row && head->col == nobody->col) {
            SimpleAudioEngine::getInstance()->stopBackgroundMusic();
            SimpleAudioEngine::getInstance()->playEffect("gameover.mp3");
            GameOver();
        }
    }

这样,死亡判定就完成了

最后,我们可以加入背景音乐 和分数
背景音乐

SimpleAudioEngine::getInstance()->playBackgroundMusic("game_scene_bg.mp3" , true);

分数:
首先定义一个全局变量score,初始化为0
在吃掉食物时让score加100
然后放到label中

//初始化分数
    score = 0;
    auto l_score = Label::createWithBMFont("font-issue1343-hd.fnt", "Score 0");
    l_score->setPositionX(visibleSize.width/2);
    l_score->setPositionY(gn->getPositionY() - 80);
    l_score->setTag(TAG_SCORE);
    this->addChild(l_score);
 //分数改变
        score+=50;
        auto lscore = (Label *)this->getChildByTag(TAG_SCORE);

        lscore->setString(StringUtils::format("Score %d" , score));
//吃掉食物时加音效
SimpleAudioEngine::getInstance()->playEffect("moved.wav");

这样,这款贪吃蛇就算完成了

大家还可以加入菜单界面,帮助界面,将它做完整。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值