【转】【2048强势来袭】第七期:添加游戏分数模块

既然2048可以开始玩了,那没有分数,怎么可以呢?

1. 声明两个变量

在HelloWorldScene.h中声明两个变量:

  1. //游戏总分
  2. int score; 
  3. //定义显示分数的控件
  4. cocos2d::LabelTTF* labelTTFCardNumber; 

声明了游戏总分和显示分数的控件

2. 加入分数标签和数字

在游戏界面的上面,左边是“分数”标签,右边是分数。

在HelloWroldScene.cpp的Init()函数中,添加如下代码:

  1. //在上方加入游戏的分数
  2. //加入“分数”label
  3. auto labelTTFCardNumberName = LabelTTF::create("SCORE","HiraKakuProN-W6",80); 
  4. labelTTFCardNumberName->setPosition(Point(visibleSize.width/3,visibleSize.height-40)); 
  5. addChild(labelTTFCardNumberName); 
  6. //加入具体的分数
  7. labelTTFCardNumber = LabelTTF::create("0","HiraKakuProN-w6",80); 
  8. labelTTFCardNumber->setPosition(Point(visibleSize.width-400,visibleSize.height-50)); 
  9. addChild(labelTTFCardNumber); 

3. 卡片合并的时候,要添加分数

当卡片合并的时候,需要添加分数。四个上下左右滑动的函数,都要添加。例如向左滑动时:

  1. bool HelloWorld::doLeft(){ 
  2. bool isdo = false; 
  3. for (int y = 0; y < 4; y++) { 
  4. for (int x = 0; x < 4; x++) { 
  5. for (int x1 = x + 1; x1 < 4; x1++) { 
  6. if (cardArr[x1][y]->getNumber() > 0) { 
  7. if (cardArr[x][y]->getNumber() <= 0) { 
  8.                         cardArr[x][y]->setNumber(cardArr[x1][y]->getNumber()); 
  9.                         cardArr[x1][y]->setNumber(0); 
  10.                         x–; 
  11.                         isdo = true; 
  12.                     }else if(cardArr[x][y]->getNumber() == cardArr[x1][y]->getNumber()){ 
  13.                         cardArr[x][y]->setNumber(cardArr[x][y]->getNumber()*2); 
  14.                         cardArr[x1][y]->setNumber(0); 
  15. //改变分数
  16.                         score += cardArr[x][y]->getNumber(); 
  17.                         labelTTFCardNumber->setString(String::createWithFormat("%i",score)->getCString()); 
  18.                         isdo = true; 
  19.                     } 
  20. break; 
  21.                 } 
  22.             } 
  23.         } 
  24.     } 
  25. return isdo; 

4. 运行项目

代码添加完毕后,运行项目,如图:

image

最后要特别感谢一下帅印。

原文地址:http://blog.csdn.net/legendof1991/article/details/23782763

共有 0 条评论

Top