Cocos2d-x 版本小游戏 《是男人就下100层》 项目开源

这个是很久就开始动手写的一个小游戏了,直到最近才把它收尾了,拖拖拉拉的毛病总是很难改啊。 

项目是基于 cocos2d-x v2.2 版本 ,目前只编译到了 Win8 平台上,并且已经上传到了商店,支持 ARM 以及 X86,其它平台的可以自己动手术去编译。

下载试玩:点这里 


项目介绍

这毕竟是个小游戏,本身其实没有什么技术难点,主要在于项目的设计,分为如下几个小模块

 

1、玩家 (Player)

玩家类我用了单例模式,继承自CCSprite,因为贯穿游戏一直会有玩家存在,在这个版本里也不会有第二个,所以单例成了我很好的选择。 

封装了 运动、血量 等。整体的游戏运动采取了背景运动而人不动的方式,感觉在这里这种要更容易掌控一些,分层很明显。

 

2、平台 

这里我参照了 Floyd 的Js版本实现,以 BlockBase 作为所有平台游戏的基类,实现了向上运动,检测玩家碰撞,移除平台等基础功能。

然后根据不同的平台类型,继承该基类实现不同效果,比如跳起,伤害,左右平移等。 

  分别有:NormalBlock (最普通的平台) 、FlipBlock(让人弹跳的平台)、MissBlock(会破损的平台)、ThornBlock(带刺的平台)、LeftRunBlock、RightRunBlock (左右运动的平台)

  还有个 BlockFactory 工厂类, 负责在恰当的时候创建合适的平台,创建的规则是随机类型,位置是从预先定义的几个里面随机取。

对于所有平台的管理, 本来最好应该是做个缓存池的,但是我发现这个性能降低实在是可以忽略,所以。。。

 

3、输入

输入这里,定义了一个基类,InputBase,因为最终肯定有几种输入的方式:PC(键盘、鼠标)、手势、重力感应等,所以这个从一开始就要考虑到。具体的处理方式是 给定一个固定的运动速度,

然后有输入事件的时候就让玩家按照这个速度来运行, 但是现在实际的效果感觉还不太理想。

 

4、场景

  场景就是那么基础的几个了。。。游戏主界面采用了MVC的模式来设计,CCScene 作为 Controller ,其它的Layer 作为View。其它页面都比较简单,单Layer 实现。逻辑也都放在Layer里了。

另外,专门定义了一个 HideLayer ,目的是实现弹出对话框的效果,考虑到原场景中可能会有CCMenu,我将该 Layer 的 优先级设为了 与 CCMenu 相同,因为后添加的原因,所以总能屏蔽

Menu 的事件, 而且在 Layer 上再添加Menu 也不会有问题。 

还有个比较有意思的是: 所有的场景我都继承了 IBackableScene 接口,这是我自己定义的一个抽象类,因为我发现对于 “后退” 按钮的处理在游戏中是非常常见的,所以这个接口里定义了

bool GoBack() = 0 函数, 所有需要响应后退事件的场景都要实现该方法,然后在该方法里实现具体的返回 代码。


 

大致的就是这些了,具体的有兴趣的可以来看源码。

Github地址:https://github.com/jeekun/DownFloors


参考游戏:

http://www.cnblogs.com/floyd/archive/2010/11/03/1868323.html

资源来源:

http://www.4399.com/flash/1164_1.htm

 

 

 

欢迎有兴趣的童鞋加入Cocos2d-x 开发群  qq: 264152376

 

 

 

 

 

posted @ 2013-12-03 09:41  jeekun  阅读(3852)  评论(5编辑  收藏  举报