最近我把之前用cocos2d-iphone做的魔塔游戏用cocos2d-x重新编写了一下,这里我在文章结尾把码源提供给大家学习应为cocos2d-x接触的还不是很深,大家有什么建议或疑问尽管找我交流一下,只有大家互相学习才能进步,

这里简单说几点我在写代码的时候遇到的问题:

1、应为C++中没用像oc中的NSString(字符串类),大部分处理都是用char完成的,所以-x中封装了一个CCString,

但是很多参数传递还是(const char *string)我们就需要通过string->getCString()来获取字符。下面一个标签的创建为例子:

CCLabelTTF::create((CCString::create("勇士你好,你可以用经验值提升自己的能力"))->getCString(),"Verdana-Bold",32);

2、-x中类的创建都统一使用create,这点感觉还不错,不过这里我说一下在-x如何像oc中[[类名 alloc ] init]的创建方式创建,new 类名 == [类名 alloc] ,( new 过的类) ->init() ==[... init]。如下所示:

BuyKey* buykey = newBuyKey();

buykey->init();

不能写成 BuyKey* buykey  = ( new   BuyKey ())->init();应为-x中init()方法的返回是bool类型。

3、在我们创建类的时候我们必须要添加CREATE_FUNC(类名);这样当你使用create创建时才会去调用你的init()方法。当然如果你想要自己手动调用你也可以不添加它,比如说当我们这个类需要使用到单例模式的时候,我们就不能使用create创建了,这个时候我们就不需要CREATE_FUNC(类名);

4、还有一点c++中没有类属性,就需要我们自己写setter和getter方法了,不过cocos2d-x中已经为我们写好了实现这两个方法的宏

// 定义一个int类的属性m_energy变量,该变量访问权限是protected。

//后面的方法名Energy,即声明了一个int getEnergy()和一个 void setEnergy(int value)的方法,具体实现需要自己在cpp中定义

CC_PROPERTY(int, m_energy, Energy);

// 基本与上相同,但是get方法传引用,即声明了一个 int& getEnergy();

CC_PROPERTY_PASS_BY_REF(int, m_energy, Energy);

//同样定义变量,但是只发声明 get方法,具体实现需要自己在cpp中定义

CC_PROPERTY_READONLY(int, m_energy, Energy);

CC_PROPERTY_READONLY_PASS_BY_REF(int, m_energy, Energy);

//同样定义变量,并且直接定义默认的get/set方法。相似的也有前4类

CC_SYNTHESIZE(cocos2d::CCObject*, m_weapon, Weapon);

CC_SYNTHESIZE_PASS_BY_REF(cocos2d::CCObject*, m_weapon, Weapon);

CC_SYNTHESIZE_READONLY(cocos2d::CCObject*, m_weapon, Weapon);

CC_SYNTHESIZE_READONLY_PASS_BY_REF(cocos2d::CCObject*, m_weapon, Weapon);

// 在setWeapon的时候,调用原有m_weapon的release,并且调用新值的的retain。当然已经排除了意外情况(相等或者NULL之类的)。

CC_SYNTHESIZE_RETAIN(cocos2d::CCObject*, m_weapon, Weapon);

CC_PROPERTY更适用于快速声明一个值属性,而CC_SYNTHESIZE更适用于声明一个对象。

如果你对这些宏不满意也可以自己实现setter和getter方法

对于数组的遍历也有相应的宏CCARRAY_FOREACH(mosterArray, object)

5、检测碰撞

对于检测碰撞-x中类似的方法Rect.intersectsRect(Rect1)检测Rect(CCRect)是否与目标区域Rect1重合。

好了暂时就先说这几点,下面我说一个没有解决的问题就是我在初始化地图的时候播放怪物行走动画后,在删除怪物图块就会崩掉,所以码源中我把这部分注释掉了,希望能够解决这个问题的朋友指点一下,我的qq:864635084

有关npc对话内容修改太麻烦那部分代码我注释掉了,有兴趣的同学可以修改一下。

这里说一下有关守卫者教程应为内容太多这里我就不继续写了,不过我会在接下来写的书cocos2d-iphone游戏开发之从零开始中进行讲解和分析,请大家关注我的博客

cocos2d-x魔塔码源

cocos2d-x魔塔20层码源和制作心得相关推荐

  1. cocos2d-iphone之魔塔20层完结篇

    tiled地图编辑器下载连接 这一章我们讲一下特殊门的打开问题,游戏中有两中特殊门,在第二层中我们可以看到 左边的特殊门是需要小偷帮你打开的代码之前已经添加过了:右边的特殊门是根据在地图中多次用到大部 ...

  2. cocos2d-iphone之魔塔20层第一部分

    tiled地图编辑器下载连接 魔塔游戏素材 这是我第一次写博客,刚开始学习ios的时候我自己学了一个月基础就开始搜索各种游戏教程我发现大多数都 是很基础,很简单的游戏,我跟着教程学到了很多东西,后来我 ...

  3. java游戏魔塔20层_▓▓◇◆20层魔塔超详细攻略◇◆ ▓▓

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 上38层杀鬼战士.两个战士和两个骑士取黄钥匙3 上39层杀战士.骑士和两个鬼战士取红宝石+4=241,不需要向商人花钱2000买蓝钥匙3并对话(塔内有个  ...

  4. cocos2d-iphone之魔塔20层第五部分

    这部分教程源代码连接 这一章我们就要开始在Game01.m文件中canMoveTo: 方法中的if循环中添 加相应的事件了,我在制作地图时图块都设置了其属性如图: 这里我就要获取其属性值 NSDict ...

  5. cocos2d-iphone之魔塔20层第十部分

    这部分教程源代码连接 今天我们要在我们的主场景中添加两个重要的精灵,就是楼层传送和怪物查看. 首先我们要在Game01.h中添加: //风之罗盘图标 CCSprite *floorFly; //洞悉权 ...

  6. cocos2d-iphone之魔塔20层第七部分

    为了感谢大家对我的支持在最后给大家提供一下这七部分的代码下载 接着昨天的开始写,我们今天就要实现勇士的穿越楼层了,我们的魔塔游戏地图 终于要露出全貌了. 首先我们要做一些准备工作,在这里我要说一点我们 ...

  7. cocos2d-iphone之魔塔20层第二部分

    我们接着第一部分教程继续写开始游戏部分 这部分教程源代码连接 下面我们开始接着昨天的内容添加,首先我们的游戏界面分为两个部分(游戏地图层,英雄信息层) 我们添加文件Game01(游戏地图层), Her ...

  8. cocos2d-iphone之魔塔20层第八部分

    为了感谢大家对我的支持这里给大家提供一下这八部分的代码下载 昨天我们的勇士可以穿越楼层了,但是我们的游戏界面还不够"生动",接下来我们就要 添加一些代码使其"生动&quo ...

  9. java游戏魔塔20层_魔塔全攻略之一——前20层

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 勇士:快走吧,外面还有很多怪物,我可能顾不上你. 小偷:不,不,不会有事的.快说吧,叫我做什么? 勇士:......你会开门吗? 小偷:那当然. 勇士:那 ...

最新文章

  1. 【MM模块】Physics Inventory 库存盘点差异
  2. 使用numpy生成one_hot
  3. JavaScript 数组详解
  4. WWW软件全球使用排名
  5. nano-pc-t1 4412 显示驱动分析
  6. Just a Hook(线段树区间更新)
  7. BZOJ 1029 [JSOI2007]建筑抢修 已更新
  8. mysql中的rman备份与恢复_RMAN备份与恢复实践(转)
  9. Jtag接口定义及含义
  10. 【数学-常用公式】基本积分表
  11. 使用ps工具进行图片分析
  12. 分数阶傅立叶变换 matlab,【综述】分数阶傅里叶变换(FRFT)
  13. ESP8266 FS库函数学习
  14. 各大互联网公司技术分享
  15. 跳转QQ群android代码,android 怎么跳转直接到qq群
  16. (30)【RCE集合】RCE漏洞的原理、出现地方、相关命令、函数解析、利用详细的过程
  17. CentOS 7 使用外部邮箱 发送邮件和附件—mail,mailx
  18. weather 城市编号
  19. IOS中删除文件和文件夹
  20. 浅谈分享什么是无线空气温湿度传感器?4g温湿度计技术参数?

热门文章

  1. 【备忘】【No2】2016年最新云计算视频教程hadoop大数据实战开发
  2. python c 混合编程 用c循环_python 与 c/c++混合编程
  3. 微信发ascii_字母D的ASCII编码是( )。
  4. [应用交流]Excel鲜为人知的35招秘技
  5. 性能优化-Android之ANR分析解决 traces.txt文件分析 CPU占用过高 解决ANR文件没有导出权限问题
  6. 支持PWM 高辉调光的多功能LED恒流驱动器Hi7011
  7. 优化mysql数据库_MySQL数据库优化技巧大全
  8. 0基础学3D建模该从哪里开始?给你3个建议
  9. ARM_SMMU_下
  10. 信息化教学设计教案计算机,信息化教学设计教案培训资料.pdf