游戏状态层StatusLayer也是分为3种状态,在不同的阶段显示相应的画面

一、状态层的三种状态

1、游戏准备

image.png

2、游戏进行

image.png

3、游戏结束

image.png

二、不同状态的处理函数

1、OnGameStart

当用户在游戏准备状态点击屏幕后,则执行OnGameStart函数

void StatusLayer::onGameStart(){
this->showStartStatus();
}
2、onGamePlaying

游戏进行过程中,状态层主要负责显示实时得分

void StatusLayer::onGamePlaying(int score){
auto scorestr = __String::createWithFormat("%d", score)->getCString();
scoreSprite->setString(scorestr);
}
其中游戏过程中展示的分数采用TextAtlas控件,先将数字做成一张合图

image.png

然后使用ui::TextAtlas::create创建,参数1:展示字符,参数2:做成的合图,参数3:每个字符所占宽度,参数4:高度,参数5:开始字符

TextAtlas* TextAtlas::create(const std::string &stringValue,
const std::string &charMapFile,
int itemWidth,
int itemHeight,
const std::string &startCharMap)
scoreSprite = ui::TextAtlas::create("0", "num.png",30, 44,"0");
3、onGameEnd
在游戏结束的时候,需要显示游戏结束画面,在这个过程当中,包括一些动画的显示,菜单的显示

void StatusLayer::onGameEnd(int curScore, int bestScore){
this->showOverStatus(curScore,bestScore);
}
void StatusLayer::showOverStatus(int curScore, int bestScore) {
this->currentScore = curScore;
this->bestScore = bestScore;
if(curScore > bestScore){
this->bestScore = curScore;
this->isNewRecord = true;
}else{
this->isNewRecord = false;
}
this->removeChild(scoreSprite);
this->blinkFullScreen();
}

项目源码托管在Github:https://github.com/smiger/FlappyBird