利用cocos2d-x 3.x+vs 开发的一款小小的win平台游戏

发表于2016-05-16
评论1 1k浏览
  学习 cocos2d 也有一两个月了 ,如今牛刀小试一把, 自己用 vs 配合cocos2d-x编写了一款小游戏
  百度网盘的安装包链接: http://pan.baidu.com/s/1buDa9o
  这个版本没有内存泄漏 ,如何检测内存泄漏以后再说。
  菜鸟练手, 大牛勿喷谢谢,嘿嘿。。。、欢迎批评指正,共同进步。如不能运行,需要安装visual cpp 2012 x86和2010 x86运行库,下载地址:
  2010 x86 :  http://pan.baidu.com/s/1kTOpj6Z
  2012 x86 :  http://pan.baidu.com/s/1gevi52b    
  新手cocos2d学习交流群:461737207
  点击链接加入群【cocos2d-x新手学习】:http://jq.qq.com/?_wv=1027&k=2KyzzRC
  下面看一下文件结构 :



  再来看一下资源文件:


  然后是场景层的主要代码了,如下 :


  场景初始化的时候, 加载文件, 数据 ,创建显示层,创建角色(主要指player和playerprotect),怪物是随机添加的。
  上图中 preloadFiles()和 preloaddata()的具体实现其实就是调用datamanager的预加载函数 , 因为这个小游戏直接跳过logoscene,loadscene,所以,所有资源都是进入gamingscene后添加的(这样不好 ,但是为了少写个scene。。。),来看下datamanager的成员 ,如下:


  preloadresources()其实就是添加各种plist文件,包括动画 ,合图。当中两次调用了 loadplistfromfiles()函数, 其实完全可以将loadplistfromfiles()写成多个参数,调用一次 。


  上面就是获得当前文件后,取出节点,然后调用加载其他数据文件的函数,实现加载plist文件。
  datamanager()中后面的三个函数就是填充三个map了。


  因为这个小程序完全是由数据驱动,这个安装后查看resources文件夹下的data文件夹下的文件即可明了 。
  接下来看一下Gamingscene中的createrole(),其实就是创建了俩角色,主要就是这两句:


  ok,进入看看:


  初始化的时候,创建了一个control对象:


  control就是按键控制,判断移动方向,角色朝向,角色状态,方便更换动画或者帧。

[

  首先创建按键监听以及回调绑定;觉得director::getinstance()....那句好长,就用别的替换一下吧
  eventDispatcher->addEventListenerWithSceneGraphPriority();现在好多了吧。哈哈。
  那么, onpress和onrelease 就是根据键盘是否有指定按键按下, 来给bool变量赋值 ,最后达到控制移动,方向等等。
  数据和角色的添加就结束了  ,这个时候看一下gamingscene的成员 :


  怪物,食物的添加都是随机时间,随机位置。用的就是cc_random(),就不多介绍了。创建和player一样, 就是没有control,是自己游动,利用的是bezier。
  看一个随机添加食物的逻辑吧


  上图包括从之前保存的map 取数据的过程。
  看一下update()


  当然少不了调度器


  太长了,没法截图,可以看出我得代码能写死的地方都是用宏,可以自由设置的数据都是从文件读到map,然后从map取,最后使用。全部逻辑代码看不到一个数字。。。。。。(变量里面的数字忽略谢谢,比如cocos2d。。。。- -!)
  碰撞当然是每一帧都要检测,这里提到了Gamemanager,它里面的就是些检测函数, 判断游戏结果的。


  单例模式。有三个数组, 是保存怪物,食物的 。碰撞的检测是检测的距离, 当然Boundingbox是个好选择,我这里有点画蛇添足。


  好吧 ,我承认拉姆达表达式好用。。下图完全是展示。。。可以忽略。。。。


  最后来看看继承关系


  很简单的结构,用的是vs2012,cocos2d-x 3.4 ,欢迎相互学习进步。 
  基本就是这样了, 其他的也没啥好解释的。可能介绍的不够完全, 敬请谅解 。
  如果需要源代码,还请留言或者微信。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引