有一段时间不摸cocos2dx了,今儿想重新温馨一下,不然以前学的就荒废了,想还是做个斗地主吧,网络版的,服务器端以后再写,今天就先搭个界面!

效果图:

搭建的界面Code:
#include "HelloWorldScene.h" #include "SimpleAudioEngine.h" #include <netdb.h> #include <pthread.h>  using namespace cocos2d; using namespace CocosDenshion;  CCScene* HelloWorld::scene() {     // 'scene' is an autorelease object     CCScene *scene = CCScene::create();          // 'layer' is an autorelease object     HelloWorld *layer = HelloWorld::create();      // add layer as a child to scene     scene->addChild(layer);      // return the scene     return scene; }  int socketHandle = 0; //创建BSD连接 //ip and port int HelloWorld::connect(const char *ip, unsigned short port) {     struct sockaddr_in sa;     struct hostent * hp;          hp = gethostbyname(ip);     if (!hp) {         return -1;     }          memset(&sa,0,sizeof(sa));     memcpy((char *)&sa.sin_addr, hp->h_addr, hp->h_length);     sa.sin_family=hp->h_addrtype;     sa.sin_port = HTONS(port);          socketHandle = socket(sa.sin_family, SOCK_STREAM, 0);     if(socketHandle<0)     {         printf("failed to create socket\n");         return -1;     }     if (::connect(socketHandle, (sockaddr *)&sa, sizeof(sa))) {         printf("failed to connect socket\n");         return -1;     }          CCLog("Client connect OK! IP:%s:%d",ip,port);     return 0; }  //创建线程 int HelloWorld::threadStart() {     int errCode = 0;     do {         pthread_attr_t tAttr;                  errCode = pthread_attr_init(&tAttr);                  CC_BREAK_IF(errCode!=0);                  errCode = pthread_attr_setdetachstate(&tAttr, PTHREAD_CREATE_DETACHED);         if (errCode!=0) {             pthread_attr_destroy(&tAttr);             break;         }                  //errCode = pthread_create(&threadHimi, &tAttr, thread_function, this);     } while (0);     return errCode; }  // on "init" you need to initialize your instance bool HelloWorld::init() {     //     // 1. super init first     if ( !CCLayer::init() )     {         return false;     }      //    char * ip = "192.168.1.24"; //    unsigned short port = 5005; //     //    int con = HelloWorld::connect(ip, port); //    if (con>0) { //        printf("error"); //    } //    else //    { //         //        printf("登陆成功"); //    }          // ask director the window size     CCSize size = CCDirector::sharedDirector()->getWinSize();               CCSprite * bg = CCSprite::create("bg.jpg");     bg->setAnchorPoint(CCPointMake(0, 1));     bg->setPosition(CCPointMake(0, size.height));     bg->setScaleX(0.58);     this->addChild(bg);          CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("card.plist");     CCSpriteBatchNode * batchNode = CCSpriteBatchNode::create("card.pvr.ccz");     batchNode->setPosition(CCPointZero);     this->addChild(batchNode);          for (int i=1; i<=13; i++)     {         CCString *name = CCString::createWithFormat("Hong%d.png",i);         CCSprite*card1=CCSprite::createWithSpriteFrameName(name->getCString());         card1->setScale(0.7);         card1->setPosition(CCPointMake(140 + i*15,size.height/2-95));         batchNode->addChild(card1);     }          CCSprite * role = CCSprite::createWithSpriteFrameName("role.png");          role->setScale(0.6);     role->setPosition(CCPointMake(60, 80));     batchNode->addChild(role);          CCSprite * role1 = CCSprite::createWithSpriteFrameName("role1.png");     role1->setScale(0.5);     role1->setPosition(CCPointMake(60, 220));     batchNode->addChild(role1);          CCSprite * role2 = CCSprite::createWithSpriteFrameName("role1.png");     role2->setScale(0.5);     role2->setPosition(CCPointMake(420,220));     batchNode->addChild(role2);               //左边牌     for (int i=2; i<=13; i++)     {         CCSprite*card1=CCSprite::createWithSpriteFrameName("SmallCardBack1.png");         card1->setScale(0.6);         card1->setRotation(-82);         card1->setPosition(CCPointMake(115+i ,size.height/2-13+i*11));         batchNode->addChild(card1);     }               //右边牌     for (int i=2; i<=13; i++)     {         CCSprite*card1=CCSprite::createWithSpriteFrameName("SmallCardBack1.png");         card1->setScale(0.6);         card1->setRotation(82);         card1->setPosition(CCPointMake(365-i,size.height/2-13+i*11));         batchNode->addChild(card1);     }               CCMenuItemImage *pCloseItem = CCMenuItemImage::create(                                         "CloseNormal.png",                                         "CloseSelected.png",                                         this,                                         menu_selector(HelloWorld::menuCloseCallback) );     pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width/2, size.height-20) );     CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);     pMenu->setPosition( CCPointZero );     this->addChild(pMenu, 1);           bgMusic = true;     return true; }  void HelloWorld::menuCloseCallback(CCObject* pSender) { //    CCDirector::sharedDirector()->end(); // //#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) //    exit(0); //#endif     bgMusic=!bgMusic;     if (bgMusic) {         SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();     }     else     {         //播放场景音乐         SimpleAudioEngine::sharedEngine()->playBackgroundMusic("bg.mp3", true);     }      } 

下面关于Socket和多线程是为了以后做网络端做准备的,就先贴出来,有兴趣的自己研究,关于这方面的可以参考Himi的博客:http://blog.csdn.net/xiaominghimi/article/details/7603123
关于Cocos2dx连接到服务器端的Code:
int socketHandle = 0; //创建BSD连接 //ip and port int HelloWorld::connect(const char *ip, unsigned short port) {     struct sockaddr_in sa;     struct hostent * hp;          hp = gethostbyname(ip);     if (!hp) {         return -1;     }          memset(&sa,0,sizeof(sa));     memcpy((char *)&sa.sin_addr, hp->h_addr, hp->h_length);     sa.sin_family=hp->h_addrtype;     sa.sin_port = HTONS(port);          socketHandle = socket(sa.sin_family, SOCK_STREAM, 0);     if(socketHandle<0)     {         printf("failed to create socket\n");         return -1;     }     if (::connect(socketHandle, (sockaddr *)&sa, sizeof(sa))) {         printf("failed to connect socket\n");         return -1;     }          CCLog("Client connect OK! IP:%s:%d",ip,port);     return 0; }

多线程的Code:

//创建线程 int HelloWorld::threadStart() {     int errCode = 0;     do {         pthread_attr_t tAttr;                  errCode = pthread_attr_init(&tAttr);                  CC_BREAK_IF(errCode!=0);                  errCode = pthread_attr_setdetachstate(&tAttr, PTHREAD_CREATE_DETACHED);         if (errCode!=0) {             pthread_attr_destroy(&tAttr);             break;         }                  //errCode = pthread_create(&threadHimi, &tAttr, thread_function, this);     } while (0);     return errCode; }

上面是非常简答的搭了个界面的代码,但还调了一段时间,后期继续跟新逻辑代码!

==================== 迂者 丁小未 CSDN博客专栏=================

MyBlog:http://blog.csdn.net/dingxiaowei2013             MyQQ:1213250243

Unity QQ群:858550         cocos2dx QQ群:280818155

====================== 相互学习,共同进步 ===================

转载请注明出处:http://blog.csdn.net/dingxiaowei2013/article/details/17636601

欢迎关注我的微博:http://weibo.com/u/2590571922

本文转蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366353,如需转载请自行联系原作者

[cocos2dx]斗地主制作之界面搭建相关推荐

  1. [cocos2dx]斗地主制作之洗牌算法

    做斗地主项目,洗牌算法是一个很重的一步,怎样"洗"的均匀,"洗"的随机,这是非常考究的,算法的优劣就直接会影响效果的好坏.这里我给出一个算法,将0-53这54个 ...

  2. 用Cocos Studio 2.3.2制作UI界面中控件不再支持运行3d动作特效

    用Cocos Studio 2.3.2制作UI界面中控件不再支持运行3d动作特效  cocos2d-x + cocos studio无疑是当下二维手游开发的利器,但是在从旧版本向新版本的升级过程中,坑 ...

  3. (0)C#开发环境构建——史上最容易理解的C#界面搭建

    本次开发使用的开发环境为:win10 64位,vs2017 64位,OpenCV341 1.vs2017的安装 安装环境的配置,网上有很多教程,在此仅做以引用,唯一需要注意的是--安装完毕后需要对电脑 ...

  4. python之连接MySQL数据库的简易界面编程(连接数据库+模块搭建+界面搭建+功能完成+效果演示)

    目录 一,连接数据库 下载pymysql软件包的三种方式 方式一 方式二 方式三 新建util包和DBUtil类,完整代码如下 二,模块搭建 建立实体类book 三,界面搭建 新建main包GUI文件 ...

  5. halcon与QT联合:(5.1)瓶盖检测以及QT界面搭建

    halcon实现瓶盖检测与定位代码: dev_close_window() dev_open_window(0, 0, 1024, 1024, 'black', WindowHandle) list_ ...

  6. 分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境(服务器端及客户端)(转)...

    近期想改公司内部的源码管控从TFS为git,发现yubinfeng大侠有关git的超详细大作,现将其转载并记录下,以防忘记,其原博客中有更加详细的git及.net开发相关内容.原文地址:http:// ...

  7. ios 仿电脑qq登录界面_1、IOS开发--iPad之仿制QQ空间(登录界面搭建+登录逻辑实现)...

    开始搭建登录界面 登录界面效果图: 步骤开始: 设置辅助窗口的位置在下方 快捷键option,然后拖拽复制之后: 这里就直接省去了将背景颜色改为经典黑了. 到这里QQ空间的登录界面搭建完毕. 下面进行 ...

  8. 搭建可视化网页的software package_网页制作与网站搭建步骤教程

    原标题:网页制作与网站搭建步骤教程 现代建设网站,只需要一个鸣蝉建站系统的账号,注册一个账号直接用网站模板建站,基本上几十秒就可以做出网站的雏形,随后再添加相关的产品信息和内容,即可建成网站. 鸣蝉智 ...

  9. mfc制作登录界面mysql_MFC制作漂亮界面之登录界面

    [实例简介] MFC制作漂亮界面之登录界面的源码,主要使用前面学过的内容来实践一个完整的界面. [实例截图] [核心代码] LoginTigger └── LoginTigger ├── LoginT ...

最新文章

  1. 阿里达摩院2020趋势第一弹:感知智能的“天花板”和认知智能的“野望”(附链接)...
  2. 《罗辑思维》读书笔记及思维导图
  3. 视频预训练界的HERO!微软提出视频-语言全表示预训练模型HERO,代码已开源!...
  4. Eclipse console 编码设置
  5. 【语音识别】基于matlab隐马尔可夫模型(HMM)孤立字语音识别【含Matlab源码 576期】
  6. 【TWVRP】基于matlab遗传算法和模拟退火求解带时间窗自行车调度问题【含Matlab源码 370期】
  7. 总结Android各类常用三方框架
  8. 如何使用 JQuery 提交 AJAX 表单
  9. android expandablelistview简单应用,android ExpandableListView简单例子
  10. IOS越狱插件安装后设置里边未显示
  11. cwRsync-windows下的rsync工具
  12. 阿里职位层级(附P级详细要求)
  13. Python获取外网ip
  14. java短信生成6位数的校验码
  15. 【Docker】Linux各系统安装Docker,Docker-compose方式汇总
  16. 基站定位查询api使用接口
  17. 雷库兹韦尔量子计算机,人物 | 他说,再挺11年,送你长生不老,要不要?
  18. LeetCode 881. 救生艇
  19. 遅くまで起きる vs 遅くまで寝る
  20. 2021年中国纯电动车产量、销量及投资情况分析[图]

热门文章

  1. 人工智能(4):模型评估
  2. 骚话连篇-土味情话彩虹屁在线生成工具
  3. 三分钟快速了解CSS Display的属性:Block,Inline,Inline-Block
  4. 移动通信中的HLR和VLR
  5. 人像光影和修饰光影的三种方法
  6. java访问domino数据库_怎样实现Java远程访问Domino数据库
  7. 查找(一)史上最简单清晰的红黑树讲解 http://blog.csdn.net/yang_yulei/article/details/26066409
  8. ServerEndpointExporter是什么 tomcat部署WebSocket服务,初始化ServerEndPointExporter失败问题
  9. VUE(0) : vue-element-admin[0] : 链接
  10. 36㎡坐拥1室2厅1厨2卫,这个“极简豪宅”太不可思议 | 费崎峰