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

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

概述在右下角显示游戏进行的回合数: 实现方式: 1、 在GameBaseScene类中创建帧缓存存放十个数字的SpriteFrame,代表0-9的阿拉伯数字,放入Vector中 2、 在GameBaseScene类中定义变量gameRoundCount,初始值为0 3、 在GameBaseScene类中定义refreshRoundDisplay()方法,用来刷新回合显示 实现方式,采用数字取模,除以0

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

实现方式:@H_403_1@

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

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

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

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

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

下面看代码实现@H_403_1@


@H_403_1@

//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();	}……………………..}



@H_403_1@

点击下载代码http://download.csdn.net/detail/lIDeguo1979/8307969
@H_403_1@


@H_403_1@

未完待续.....................@H_403_1@ 总结

以上是内存溢出为你收集整理的Cocos2d-x 3.2 大富翁游戏项目开发-第十二部分 显示回合计数器全部内容,希望文章能够帮你解决Cocos2d-x 3.2 大富翁游戏项目开发-第十二部分 显示回合计数器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1026319.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存