cocos2dx《单机斗地主》源码解剖之一 创建一副扑克牌(54张)

前端之家收集整理的这篇文章主要介绍了cocos2dx《单机斗地主》源码解剖之一 创建一副扑克牌(54张)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本项目基于cocos2dx引擎开发,根据网上搜索的斗地主文案(参见博客:斗地主规则)由本人独立完成,废话少说(本人不善言辞,我也说不出来什么废话)下面我来做个项目总结。

1.创建一副扑克牌,写代码首先创建一张牌的类。如下所示:


  1. class Poker : public Sprite
  2. {
  3. public:
  4. Poker();
  5. ~Poker();
  6. static Poker* create(const char *pszFileName,const CCRect& rect);
  7. virtual void onEnter();
  8. virtual void onExit();
  9. virtual bool onTouchBegan(CCTouch *pTouch,CCEvent *pEvent);
  10. virtual void onTouchMoved(CCTouch *pTouch,CCEvent *pEvent);
  11. virtual void onTouchEnded(CCTouch *pTouch,CCEvent *pEvent);
  12. virtual void onTouchCancelled(CCTouch *pTouch,CCEvent *pEvent);
  13. void showFront();//显示正面
  14. void showLast();//显示背面
  15. Poker* copy();//拷贝
  16. void setTouchPriority(int num);
  17. void SelectPkLuTou();//如果选择了牌就露出头
  18. void SelectPkSuoTou();//如果选择了牌就缩头
  19. private:
  20. CC_SYNTHESIZE(bool,m_isSelect,Select);//是否已选
  21. CC_SYNTHESIZE(GameScene*,m_gameMain,GameMain);
  22. CC_SYNTHESIZE(bool,m_isDianJi,DianJi);//是否能被点击
  23. CC_SYNTHESIZE(int,m_huaSe,HuaSe);//花色
  24. CC_SYNTHESIZE(int,m_num,Num);//牌值
  25. EventListenerTouchOneByOne* touchListener;
  26. };
然后我们用这个类写了一个函数生成一张牌,该函数如下(位于源码GameScene中):
  1. Poker* GameScene::selectPoker(int huaSe,int num){
  2. Poker* pk;
  3. if(huaSe != Gui)
  4. pk = Poker::create("poker.png",CCRect(num*pkWidth,huaSe*pkHeight,pkWidth,pkHeight));
  5. else
  6. pk = Poker::create("poker.png",CCRect((num-XiaoGui)*pkWidth,pkHeight));
  7. pk->setHuaSe(huaSe);
  8. pk->setNum(num);
  9. pk->setGameMain(this);
  10. return pk;
  11. }

poker.png图片如下:
2.接下来我们就用来创建一副扑克牌了,请看代码(在GameScene文件中)GameScene
  1. bool GameScene::createPokers(){
  2. bool isRet = false;
  3. do
  4. {
  5. Size size = Director::sharedDirector()->getVisibleSize();
  6. Poker* pk;
  7. //创建52个除大鬼小鬼外的牌
  8. for (int i=0; i<4; ++i)
  9. {
  10. for (int j=0; j<13; ++j)
  11. {
  12. pk = selectPoker(i,j);
  13. pk->setPosition(ccp(size.width/2/*+j*20*/,size.height/2/*-i*20*/));
  14. pk->showLast();
  15. this->addChild(pk);
  16. this->m_arrPokers->addObject(pk);
  17. }
  18. }
  19. //创建小鬼
  20. pk = selectPoker(Gui,XiaoGui);
  21. pk->setPosition(ccp(size.width/2,size.height/2/*-4*20*/));
  22. pk->showLast();
  23. this->addChild(pk);
  24. this->m_arrPokers->addObject(pk);
  25. //创建大鬼
  26. pk = selectPoker(Gui,DaGui);
  27. pk->setPosition(ccp(size.width/2/*+20*/,size.height/2/*-4*20*/));
  28. pk->showLast();
  29. this->addChild(pk);
  30. this->m_arrPokers->addObject(pk);
  31. isRet = true;
  32. } while (0);
  33. return isRet;
  34. }
源码下载:http://pan.baidu.com/s/1ntzayjJ

猜你在找的Cocos2d-x相关文章