《StopGMO》,就是我第一篇博文中提到的《兔子大战转基因(蔬菜)》。它本来是个flash游戏(http://wanga.me/25523)。我克隆(山寨)它是由于我在学cocos2d-x的时候恰好玩了这个游戏,而且以为比较简单,而且我没有美工,因此就决定克隆一下它。个人程序里面用到的图片资源基原本源于原来falsh版本的StopGMO,这些资源仅供学习和娱乐,但愿没有侵犯原来游戏的版权。 android
如下连接是代码及资源的连接(其中包含一个编译为android可运行程序的apk安装包(应用android2.2的api编译)): 编程
http://www.oschina.net/code/snippet_115087_17123 api
暂时只添加了一种怪物--胡萝卜。若是要添加新的怪物,能够继承代码中的Enemy类来添加新的怪物类。 学习
目前的主角也只能使用一种武器--锄头。若是要添加新的武器,能够继承代码中的Weapon类来添加新的武器类。 动画
如今的主角是处于无敌状态的,由于我在代码中进行了攻击的检测,可是并无调用玩家的hurt()方法。 spa
///////////////////////////////////////////////////////////////////// .net
关于程序的结构: 设计
GameRoot做为一个静态的类,负责图片资源的初始化、场景的替换等。 code
SceneGame做为一个游戏的场景类。它包含了HudLayer跟GameLayer。其中HudLayer是负责接受并解析用户输入的,而GameLayer是负责游戏主要事件逻辑控制的。而SceneGame的做用就是将HudLayer解析的控制输入传输到GameLayer里。 继承
HudLayer负责接受和解析用户输入。包括虚拟手柄和按键以及菜单按钮等。(虚拟手柄我用了一个现有的库:Sneaky library)。
GameLayer负责游戏事件的逻辑控制。它每一帧都调用gameLogic方法。该方法中处理包括inputUpdate();spawnUpdate();bulletUpdate();enemyUpdate();viewpointUpdate();等。
最后得说一下,我用的cocos2d-x的版本是cocos2d-2.1beta3-x-2.1.0。其余版本的库在编译时,源文件可能须要有稍许修改。
/////////////////////////////////////////////////////////////////////
未来的改进:
1.最近我在看一本书:《游戏编程精粹1》。里面提到了一个思想:数据驱动。我感受个人程序是能够应用这个思想的。Enemy再也不派生出Carrot,Corn等怪物类。由于Carrot,Corn等怪物的行为实际上是彻底同样的,只是移动速度、攻击力、贴图等不一样。因此其实能够编写一个XML文件来保存速度、攻击力、贴图名称等数据。在Enemy实例化的时候提取XML文件的数据便可生成相似Carrot,Corn等不一样种的怪物了。Weapon也是能够应用这种思想的。
2.尽可能少用new跟delete。Enemy或者Bullet等在设置为die之后都不是直接delete,而是为其添加一个布尔量IsUsed,在die后设置为false。表示这个实例已经死亡了。在下一次须要new的时候,咱们不用new,而是修改那些IsUsed == false的实例的速度、攻击力等参数,模拟一次new。
3.将子弹变成一个CCSprite。子弹再也不是隐形的子弹,而是具备动画的,而且能够设置特定轨迹的。就像合金弹头里面的同样。
4.还在想。。。
/////////////////////////////////////////////////////////////////////
工做进度:
进度可能会很慢,由于我如今正在搞毕业设计。而且我也不怎么想搞这个游戏了,我想搞另一个相似涂鸦跳跃的刷分游戏。