本项目基于cocos2dx引擎开发,根据网上搜索的斗地主文案(参见博客:斗地主规则)由本人独立完成,废话少说(本人不善言辞,我也说不出来什么废话)下面我来做个项目总结。
1.创建一副扑克牌,写代码首先创建一张牌的类。如下所示:
class Poker : public Sprite{public: Poker(); ~Poker(); static Poker* create(const char *pszfilename,const CCRect& rect); virtual voID onEnter(); virtual voID onExit(); virtual bool ontouchBegan(CCtouch *ptouch,CCEvent *pEvent); virtual voID ontouchmoved(CCtouch *ptouch,CCEvent *pEvent); virtual voID ontouchended(CCtouch *ptouch,CCEvent *pEvent); virtual voID ontouchCancelled(CCtouch *ptouch,CCEvent *pEvent); voID showFront();//显示正面 voID showLast();//显示背面 Poker* copy();//拷贝 voID settouchPriority(int num); voID SelectPkLuTou();//如果选择了牌就露出头 voID SelectPkSuoTou();//如果选择了牌就缩头private: CC_SYNTHESIZE(bool,m_isSelect,Select);//是否已选 CC_SYNTHESIZE(GameScene*,m_gameMain,GameMain); CC_SYNTHESIZE(bool,m_isDianJi,DianJi);//是否能被点击 CC_SYNTHESIZE(int,m_huaSe,HuaSe);//花色 CC_SYNTHESIZE(int,m_num,Num);//牌值 EventListenertouchOneByOne* touchListener;};然后我们用这个类写了一个函数来生成一张牌,该函数如下(位于源码GameScene中):
Poker* GameScene::selectPoker(int huaSe,int num){ Poker* pk; if(huaSe != Gui) pk = Poker::create("poker.png",CCRect(num*pkWIDth,huaSe*pkHeight,pkWIDth,pkHeight)); else pk = Poker::create("poker.png",CCRect((num-XiaoGui)*pkWIDth,pkHeight)); pk->setHuaSe(huaSe); pk->setNum(num); pk->setGameMain(this); return pk;}
poker.png图片如下:
2.接下来我们就用来创建一副扑克牌了,请看代码(在GameScene文件中)GameScene
bool GameScene::createPokers(){ bool isRet = false; do { Size size = Director::sharedDirector()->getVisibleSize(); Poker* pk; //创建52个除大鬼小鬼外的牌 for (int i=0; i<4; ++i) { for (int j=0; j<13; ++j) { pk = selectPoker(i,j); pk->setposition(ccp(size.wIDth/2/*+j*20*/,size.height/2/*-i*20*/)); pk->showLast(); this->addChild(pk); this->m_arrPokers->addobject(pk); } } //创建小鬼 pk = selectPoker(Gui,XiaoGui); pk->setposition(ccp(size.wIDth/2,size.height/2/*-4*20*/)); pk->showLast(); this->addChild(pk); this->m_arrPokers->addobject(pk); //创建大鬼 pk = selectPoker(Gui,DaGui); pk->setposition(ccp(size.wIDth/2/*+20*/,size.height/2/*-4*20*/)); pk->showLast(); this->addChild(pk); this->m_arrPokers->addobject(pk); isRet = true; } while (0); return isRet;}源码下载:http://pan.baIDu.com/s/1ntzayjJ 总结
以上是内存溢出为你收集整理的cocos2dx《单机斗地主》源码解剖之一 创建一副扑克牌(54张)全部内容,希望文章能够帮你解决cocos2dx《单机斗地主》源码解剖之一 创建一副扑克牌(54张)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)