展会信息港展会大全

Cocos2d-x 3.2 大富翁游戏项目开发-第十二部分 显示回合计数器,cocos2d-x项目开发
来源:互联网   发布日期:2015-09-28 14:47:39   浏览:1611次  

导读: Cocos2d-x 3.2 大富翁游戏项目开发-第十二部分 显示回合计数器,cocos2d-x项目开发 在右下角显示游戏进行的回合数: 实现方式: 1、 在GameBaseScene类中创建帧...

Cocos2d-x 3.2 大富翁游戏项目开发-第十二部分 显示回合计数器,cocos2d-x项目开发

在右下角显示游戏进行的回合数:

实现方式:

1、 在GameBaseScene类中创建帧缓存存放十个数字的SpriteFrame,代表0-9的阿拉伯数字,放入Vector中

2、 在GameBaseScene类中定义变量gameRoundCount,初始值为0

3、 在GameBaseScene类中定义refreshRoundDisplay()方法,用来刷新回合显示

实现方式,采用数字取模,除以0不为零,直到取完,从digiteVector取得sprite对象,倒序放入refreshRoundVector中,取模完毕后,刷新显示

4、 当所有角色走完一遍后,gameRoundCount++,然后调用refreshRoundDisplay()刷新显示

下面看代码实现

//1、根据数字plist文件 在帧缓存中存放数字spriteFrame,同时存入digiteRoundVector容器中

void GameBaseScene::addDigiteRoundSprite()

{

//2、定义变量gameRoundCount,初始值为0,记录游戏进行的回合数

gameRoundCount=0;

auto frameCache = SpriteFrameCache::getInstance();

frameCache->addSpriteFramesWithFile("map/digital_round.plist");

digiteRoundVector.pushBack(frameCache->getSpriteFrameByName(DIGITAL_0));

digiteRoundVector.pushBack(frameCache->getSpriteFrameByName(DIGITAL_1));

digiteRoundVector.pushBack(frameCache->getSpriteFrameByName(DIGITAL_2));

digiteRoundVector.pushBack(frameCache->getSpriteFrameByName(DIGITAL_3));

digiteRoundVector.pushBack(frameCache->getSpriteFrameByName(DIGITAL_4));

digiteRoundVector.pushBack(frameCache->getSpriteFrameByName(DIGITAL_5));

digiteRoundVector.pushBack(frameCache->getSpriteFrameByName(DIGITAL_6));

digiteRoundVector.pushBack(frameCache->getSpriteFrameByName(DIGITAL_7));

digiteRoundVector.pushBack(frameCache->getSpriteFrameByName(DIGITAL_8));

digiteRoundVector.pushBack(frameCache->getSpriteFrameByName(DIGITAL_9));

}

3、refreshRoundDisplay()方法,用来刷新回合显示

void GameBaseScene::refreshRoundDisplay()

{

// refreshRoundVector容器存放之前回合数相关的Sprite ,所以在刷新之前要把前面的清除

for(auto it = refreshRoundVector.begin();it != refreshRoundVector.end();it++)

{

((Sprite*) *it)->setVisible(false);

}

refreshRoundVector.clear();

int count = gameRoundCount;

Sprite* st;

//当游戏刚开始,显示回合数为0

if(count ==0 )

{

st = Sprite::createWithSpriteFrame(digiteRoundVector.at(0));

addChild(st);

refreshRoundVector.pushBack(st);

}

//把数字转换成Sprite 存放进refreshRoundVector容器

while(count!=0)

{

st = Sprite::createWithSpriteFrame(digiteRoundVector.at(count%10));

addChild(st);

refreshRoundVector.pushBack(st);

count = count/10;

}

//存放时由于取模计算,都是倒序存放的,所以正确显示时要把顺序倒过来

refreshRoundVector.reverse();

for(int i = 0;i< refreshRoundVector.size();i++)

{

Sprite * sp = refreshRoundVector.at(i);

sp->setPosition(ccp((tableStartPosition_x+50)+(i*25),50));

sp->setVisible(true);

}

}

4、 当所有角色走完一遍后,gameRoundCount++,然后调用refreshRoundDisplay()刷新显示

我们在接收到要求显示go按钮的时候处理这段逻辑

void GameBaseScene::receivedMsgForGo(Object* data)

{

if(retMsgType ==1)

{

……………

diceSprite->resume();

gameRoundCount++;

refreshRoundDisplay();

}

……………………..

}

点击下载代码http://download.csdn.net/detail/lideguo1979/8307969

未完待续.....................

http://www.bkjia.com/Androidjc/934183.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/934183.htmlTechArticleCocos2d-x 3.2 大富翁游戏项目开发-第十二部分 显示回合计数器,cocos2d-x项目开发 在右下角显示游戏进行的回合数: 实现方式: 1、 在GameBa...

赞助本站

人工智能实验室

相关热词: android开发 应用开发

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港