[cocos2dx]斗地主制作之界面搭建
有一段时间不摸cocos2dx了,今儿想重新温馨一下,不然以前学的就荒废了,想还是做个斗地主吧,网络版的,服务器端以后再写,今天就先搭个界面!
效果图:
![](/assets/blank.gif)
#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); } }
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
[cocos2dx]斗地主制作之界面搭建相关推荐
- [cocos2dx]斗地主制作之洗牌算法
做斗地主项目,洗牌算法是一个很重的一步,怎样"洗"的均匀,"洗"的随机,这是非常考究的,算法的优劣就直接会影响效果的好坏.这里我给出一个算法,将0-53这54个 ...
- 用Cocos Studio 2.3.2制作UI界面中控件不再支持运行3d动作特效
用Cocos Studio 2.3.2制作UI界面中控件不再支持运行3d动作特效 cocos2d-x + cocos studio无疑是当下二维手游开发的利器,但是在从旧版本向新版本的升级过程中,坑 ...
- (0)C#开发环境构建——史上最容易理解的C#界面搭建
本次开发使用的开发环境为:win10 64位,vs2017 64位,OpenCV341 1.vs2017的安装 安装环境的配置,网上有很多教程,在此仅做以引用,唯一需要注意的是--安装完毕后需要对电脑 ...
- python之连接MySQL数据库的简易界面编程(连接数据库+模块搭建+界面搭建+功能完成+效果演示)
目录 一,连接数据库 下载pymysql软件包的三种方式 方式一 方式二 方式三 新建util包和DBUtil类,完整代码如下 二,模块搭建 建立实体类book 三,界面搭建 新建main包GUI文件 ...
- halcon与QT联合:(5.1)瓶盖检测以及QT界面搭建
halcon实现瓶盖检测与定位代码: dev_close_window() dev_open_window(0, 0, 1024, 1024, 'black', WindowHandle) list_ ...
- 分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境(服务器端及客户端)(转)...
近期想改公司内部的源码管控从TFS为git,发现yubinfeng大侠有关git的超详细大作,现将其转载并记录下,以防忘记,其原博客中有更加详细的git及.net开发相关内容.原文地址:http:// ...
- ios 仿电脑qq登录界面_1、IOS开发--iPad之仿制QQ空间(登录界面搭建+登录逻辑实现)...
开始搭建登录界面 登录界面效果图: 步骤开始: 设置辅助窗口的位置在下方 快捷键option,然后拖拽复制之后: 这里就直接省去了将背景颜色改为经典黑了. 到这里QQ空间的登录界面搭建完毕. 下面进行 ...
- 搭建可视化网页的software package_网页制作与网站搭建步骤教程
原标题:网页制作与网站搭建步骤教程 现代建设网站,只需要一个鸣蝉建站系统的账号,注册一个账号直接用网站模板建站,基本上几十秒就可以做出网站的雏形,随后再添加相关的产品信息和内容,即可建成网站. 鸣蝉智 ...
- mfc制作登录界面mysql_MFC制作漂亮界面之登录界面
[实例简介] MFC制作漂亮界面之登录界面的源码,主要使用前面学过的内容来实践一个完整的界面. [实例截图] [核心代码] LoginTigger └── LoginTigger ├── LoginT ...
最新文章
- 阿里达摩院2020趋势第一弹:感知智能的“天花板”和认知智能的“野望”(附链接)...
- 《罗辑思维》读书笔记及思维导图
- 视频预训练界的HERO!微软提出视频-语言全表示预训练模型HERO,代码已开源!...
- Eclipse console 编码设置
- 【语音识别】基于matlab隐马尔可夫模型(HMM)孤立字语音识别【含Matlab源码 576期】
- 【TWVRP】基于matlab遗传算法和模拟退火求解带时间窗自行车调度问题【含Matlab源码 370期】
- 总结Android各类常用三方框架
- 如何使用 JQuery 提交 AJAX 表单
- android expandablelistview简单应用,android ExpandableListView简单例子
- IOS越狱插件安装后设置里边未显示
- cwRsync-windows下的rsync工具
- 阿里职位层级(附P级详细要求)
- Python获取外网ip
- java短信生成6位数的校验码
- 【Docker】Linux各系统安装Docker,Docker-compose方式汇总
- 基站定位查询api使用接口
- 雷库兹韦尔量子计算机,人物 | 他说,再挺11年,送你长生不老,要不要?
- LeetCode 881. 救生艇
- 遅くまで起きる vs 遅くまで寝る
- 2021年中国纯电动车产量、销量及投资情况分析[图]
热门文章
- 人工智能(4):模型评估
- 骚话连篇-土味情话彩虹屁在线生成工具
- 三分钟快速了解CSS Display的属性:Block,Inline,Inline-Block
- 移动通信中的HLR和VLR
- 人像光影和修饰光影的三种方法
- java访问domino数据库_怎样实现Java远程访问Domino数据库
- 查找(一)史上最简单清晰的红黑树讲解 http://blog.csdn.net/yang_yulei/article/details/26066409
- ServerEndpointExporter是什么 tomcat部署WebSocket服务,初始化ServerEndPointExporter失败问题
- VUE(0) : vue-element-admin[0] : 链接
- 36㎡坐拥1室2厅1厨2卫,这个“极简豪宅”太不可思议 | 费崎峰