cocos2d-x-3.16 实例开发之FlappyBird【6】游戏状态层

游戏状态层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控件,先将数字做成一张合图

num.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


发表评论

(必填)

(必填)

(以便回访)

博客已稳定运行: 访问量:167,436 views 网站备案号:闽ICP备17026396号-1