cocos2dx《单机斗地主》源码解剖之三 发牌

cocos2dx《单机斗地主》源码解剖之三 发牌,第1张

概述牌洗完之后,下面就该一个一个向玩家发牌了,请看下面代码: void GameScene::SendPk(){ Poker* pk; if(m_iSendPk<51 && m_isSend)//前51张牌发给玩家 { pk = (Poker*)m_arrPokers->objectAtIndex(m_iSendPk); if(m_iSendPk%3 == 0)//给玩家发牌 Mo

牌洗完之后,下面就该一个一个向玩家发牌了,请看下面代码:

voID GameScene::SendPk(){	Poker* pk;	if(m_iSendPk<51 && m_isSend)//前51张牌发给玩家	{		pk = (Poker*)m_arrPokers->objectAtIndex(m_iSendPk);		if(m_iSendPk%3 == 0)//给玩家发牌			MovePk(m_player,pk);		else if(m_iSendPk%3 == 1)//给电脑1发牌			MovePk(m_npcOne,pk);		else if(m_iSendPk%3 == 2)//给电脑2发牌			MovePk(m_npcTwo,pk);		++m_iSendPk;		m_isSend = false;	}else if (m_iSendPk>50 && m_iSendPk<54 && m_isSend)//留下三张地主牌	{		pk = (Poker*)m_arrPokers->objectAtIndex(m_iSendPk);		pk->showFront();		MovePk(m_Three,pk);		++m_iSendPk;		m_isSend = false;	}	else if(m_iSendPk>53)//牌发完分析电脑玩家的牌型	{		FenChaiNpcPai(m_npcOne);		FenChaiNpcPai(m_npcTwo);		m_iSendPk = 0;		m_iState = 1;	}}
大家一定注意到上面的m_isSend的变量了,这个变量就是指发给某一个玩家的牌动画是否完成。我们再来看一下MovePk()的代码就有些明白了:
voID GameScene::MovePk(Player* play,Poker* pk){	CCMoveto* move;	CCCallFuncND* func;	float time = 0.05;	play->getArrPk()->addobject(pk);//从一副牌中选择pk这张牌	move = CCMoveto::create(time,play->getPoint());	func = CCCallFuncND::create(this,callfuncND_selector(GameScene::func),play);	CCSequence* sequence = CCSequence::create(move,func,NulL);	pk->runAction(sequence);}voID GameScene::func(CCNode* pSender,voID* pData){	Player* play = (Player*)pData;	play->updatePkWeiZhi();//整理一个玩家手中的牌	m_isSend = true;}

大家一定也注意到了play->updatePkWeiZhi()这个函数了,它的意义正如注释据所说的。这个我们在下一篇文章来解释。

源码下载:http://pan.baIDu.com/s/1ntzayjJ

总结

以上是内存溢出为你收集整理的cocos2dx《单机斗地主》源码解剖之三 发牌全部内容,希望文章能够帮你解决cocos2dx《单机斗地主》源码解剖之三 发牌所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1040330.html

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

发表评论

登录后才能评论

评论列表(0条)

保存