Cocos2d-x 3.2 大富翁游戏项目开发-第十二部分 显示回合计数器
来源:互联网 发布:剑指offer c语言 编辑:程序博客网 时间:2024/05/05 00:05
在右下角显示游戏进行的回合数:
实现方式:
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
未完待续.....................
1 0
- Cocos2d-x 3.2 大富翁游戏项目开发-第十二部分 显示回合计数器
- Cocos2d-x 3.2 大富翁游戏项目开发-第二十五部分 大富翁股市
- Cocos2d-x 3.2 大富翁游戏项目开发
- Cocos2d-x 3.2 大富翁游戏项目开发-第二十八部分 游戏保存和载入存档游戏
- Cocos2d-x 3.2 大富翁游戏项目开发-第九部分 代码部分优化
- Cocos2d-x 3.2 大富翁游戏项目开发-第五部分 单机游戏-关卡选择ScrollView
- Cocos2d-x 3.2 大富翁游戏项目开发-第二十七部分 技能提升和游戏结束判断
- Cocos2d-x 3.2 大富翁游戏项目开发-第二十九部分 游戏配音
- Cocos2d-x 3.2 大富翁游戏项目开发-第三十部分 项目移植
- Cocos2d-x 3.2 大富翁游戏项目开发-第二部分片头动画
- Cocos2d-x 3.2 大富翁游戏项目开发-第三部分 菜单场景
- Cocos2d-x 3.2 大富翁游戏项目开发-第四部分 退出对话框
- Cocos2d-x 3.2 大富翁游戏项目开发-第六部分 地图设计
- Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_1
- Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_2
- Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_3
- Cocos2d-x 3.2 大富翁游戏项目开发-第八部分 角色按路径行走
- Cocos2d-x 3.2 大富翁游戏项目开发-第十部分实现人物轮流行走
- nyoj 12 喷水装置(二)
- 开发团队的合理结构
- 来自知乎:关于while(cin>>string)的输出结果
- 深入浅出MFC DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC 宏 模拟代码
- 关于java中装饰者模式的详解
- Cocos2d-x 3.2 大富翁游戏项目开发-第十二部分 显示回合计数器
- Python 倒排索引
- 副国、正部知多少
- 【BZOJ2342】【Shoi2011】双倍回文 Manacher+枚举+最优性剪枝
- 滚动视图的调整
- javascript的高级应用
- [leetcode 141] Linked List Cycle
- C++中枚举的用法
- Yaw pitch roll