首页 > 代码库 > 【来写个2048吧】—— 游戏结束检测与添加分数
【来写个2048吧】—— 游戏结束检测与添加分数
一、 游戏结束检测
//检测游戏是否结束 void GameScene :: doCheck() { bool isGameOver = true ; //判断每一个的上下左右和自己是否相同 for ( int y = 0 ; y < 4; y++) { for ( int x = 0 ; x < 4; x++) { if ( cardArr [x ][ y]-> getNumber () == 0 || ( x< 3 && cardArr[ x ][y ]-> getNumber() == cardArr [x + 1][ y ]->getNumber ()) || ( x> 0 && cardArr[ x ][y ]-> getNumber() == cardArr [x - 1][ y ]->getNumber ()) || ( y< 3 && cardArr[ x ][y ]-> getNumber() == cardArr [x ][ y+ 1 ]->getNumber ()) || ( y> 0 && cardArr[ x ][y ]-> getNumber() == cardArr [x ][ y- 1 ]->getNumber ()) ) { isGameOver = false; } } } if ( isGameOver ) { //重来 Director ::getInstance ()-> replaceScene( TransitionFade ::create ( 1, GameScene ::createScene ())); } }
然后在上下左右每滑动一次添加doCheck()函数来判断游戏是否结束
二、添加游戏分数
在GameScene.h中声明
//分数 int score ; //显示分数控件 LabelTTF * cardNumberTTF ; //设置分数 void setScore ( int score );
然后setScore代码如下
//设置分数 void GameScene :: setScore( int score ) { cardNumberTTF ->setString ( __String:: createWithFormat ("%i" , score)-> getCString ()); }
首先在init()中加上如下代码,用来初始化变量
score = 0; cardNumberTTF = LabelTTF:: create ("0" , "Consolas" , 70 ); cardNumberTTF ->setPosition ( Point( visibleSize .width / 2 + 340 , visibleSize .height / 2 - 100 )); addChild (cardNumberTTF );
然后在doLeft(),doRight(),doUp(),doDown()中,当两张卡片相等时分数增加
//改变分数 score += cardArr[ x ][y ]-> getNumber();
最后还是在每次调用doXXX()后面加上setScore(score)即可。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。