c++实践--cocos2dx, 2048v1.0
来源:互联网 发布:linux显示目录树 编辑:程序博客网 时间:2024/05/21 06:44
主要类的作用和关系:
Director: 导演,单例类Director::getInstance()
设置游戏配置(OpenGL),推动游戏发展
转场:runWithScene, replaceScene, pushScene, popScene
Scene: 场景,负责组织游戏元素
Layer: 层, 负责组织游戏元素
Sprite: 精灵,封装了一张图片,显示具体元素
背景图片,主角,敌人,道具,头像。。。。
GLView: 舞台,OpenGL渲染的目标(窗口)
设置游戏配置(OpenGL),推动游戏发展
转场:runWithScene, replaceScene, pushScene, popScene
Scene: 场景,负责组织游戏元素
Layer: 层, 负责组织游戏元素
Sprite: 精灵,封装了一张图片,显示具体元素
背景图片,主角,敌人,道具,头像。。。。
GLView: 舞台,OpenGL渲染的目标(窗口)
2048游戏逻辑
采用二维数组作为游戏界面的显示,
2048游戏逻辑:【1】生成游戏对象(2个数字)CreatePerson()CreatePerson()【2】更新游戏视图界面如果胜利就不相应用户输入if(isWin){return;}if(up){ctlfunc()}else if(down){ctlfunc()}else if(left){ctlfunc()}else if(right){ctlfunc()}---------------------------随机生成位置CreatePerson(){只要数组元素为空就生成,并记录当前坐标位置。}移动控制ctlfunc(){//对于第0行不需要移动,已经是最上行了for (int y = 1; y < 4; y++){for (int x = 0; x < 4; x++){person = PersonList[x, y];if (person == null){//如果当前位置没有对象,则不需要进行任何操作continue;}//如果当前位置有对象,则执行以下代码//判断当前位置的前面所有位置是否有对象int destPos = -1;for (int y1 = y - 1; y1 >= 0; y1--){personBefore = PersonList[x, y1];if (personBefore != null){//如果有,则不再向前找if (person.name.Equals(personBefore.name)){//如果是相同的对象则合并,不再需要移动当前对象destPos = -1;Destroy(person);PersonList[x, y] = null;//更新合并后的数字personBefore.SendMessage("UpdateLevel");}break;}else{//如果没有,则继续向前找destPos = y1;}}if (destPos > -1){//完成移动//1、更新位置矩阵信息PersonList[x, y] = null;PersonList[x, destPos] = person;//2、更改当前游戏对象的位置person.transform.position += new Vector3(0, (y - destPos) * ItCastHelper.YOffset, 0);}}}//新生成游戏对象CreatePerson();}
代码结构:
使用mvc的软件模型,scene和layer的解耦和。
心得:
cocos引擎确实够强大,可以很好的练习c++,c代码将linux的内核源代码写到了极致。c++代码将cocos同样写成了极品。仔细的拜读源代码,确实可以很优雅地将程序码出来。
结合网上的资源,加上自己的理解,算是自己也写出一个demo。
cmd进入到E:\BaiduYunDownload\6yue\cocos2dx_env\cocos2d-x-3.1\tools\cocos2d-console\bin目录中,
>python cocos.py new wuyq-2048 -p com.wuyq.cn -l cpp -d E:\
源代码, 新建一个项目,将Classes和Resources目录中的文件进行覆盖即可。
起初,打算在windows平台上面,利用语音控制键盘的输入,从而控制游戏的交互。百度了一下,cocos2d主要面向的是触摸屏幕设备的,在WINDOWS下的定位感觉多多少少就是相当于一个模拟器,因此并没有太多的PC下重要的键盘支持。然而响应键盘消息对于调试来说可以提供不少方便。下边就通过更改cocos2d-x的源码来添加键盘消息响应。感觉意义不大了。对于语音控制的demo,单独做一个demo进行练习。
后期:
将windwos下面的代码移植到android上面。
1 0
- c++实践--cocos2dx, 2048v1.0
- c++实践--cocos2dx, 2048v1.0
- Cocos2dx学习之-----别踩白块V1.0
- C,日历V1.0。
- 软件工程(C编码实践篇) 实验二:命令行菜单小程序V1.0
- “软件工程(C编码实践篇)”实验报告【实验二:命令行菜单小程序V1.0】
- 软件工程(C编码实践篇)”实验报告 实验二:命令行菜单小程序V1.0
- SqlHelper V1.0 (C#)
- Cmake实践一:hello world(v1.0)
- C++Builder6.0精简版v1.06
- Cocos2dx 2.2.0 孤狼优化整合版V1.0(32位)
- Cocos2dx 2.2.0 孤狼优化整合版V1.0(64位)
- Cocos2dx 2.2.0 孤狼优化整合版V1.0(32位)
- Cocos2dx 2.2.0 孤狼优化整合版V1.0(64位)
- Cocos2dx 2.1.5 孤狼优化整合版V1.0(64位)
- Cocos2dx 2.1.5 孤狼优化整合版V1.0(32位)
- Cocos2dx 2.1.5 孤狼优化整合版V1.0(64位)
- Cocos2dx 2.1.5 孤狼优化整合版V1.0(32位)
- 如何取消魅族手机的下拉悬停?
- Android中Handler在主线程发空消息
- 证书p12的生成
- UVA - 10879 Code Refactoring
- 关于指针
- c++实践--cocos2dx, 2048v1.0
- JAVA设计模式(二)——工厂方法模式
- javascript语法(三)
- Android 开发环境下载地址 adt-bundle android-studio sdk adt 下载
- Android智能指针
- 苹果越来越火
- java处理图片公共方法
- 模板
- [转]设计模式在Java I/O中的应用(装饰模式和适配器模式)