引言
消除类游戏是非常受大家欢迎的一种游戏类型,我就经常在轻轨上看到各种年龄段的人在玩。于是我就动手来实现一个,并做了一个DEMO(使用目前最新的cocos2d-x 3.6),大家可以随意修改。既然网上有很多游戏源码,我想我的应该要有一些特色。不能老是千篇一律。先给大家看看效率图,动态图比较大,可能加载很慢。(本文不会讲实现细节,如果读者想知道这方面的东西可以自行阅读源码,注释还是比较详细的。)
特点
- 游戏地图可编辑,可发挥自己的创意
- 游戏算法与界面分离,可以很容易移植到其它游戏引擎
源码目录
由于只是一个DEMO,代码不多。其实本来我是想做一个完整的游戏了,而且已经做了一部分了。无奈懒得调UI就烂尾了。下面介绍下主要的源码:
- Backend 游戏算法相关的代码,独立于UI,可以拿到其它游戏引擎直接使用的;
- Config 负责读取游戏配置和解析地图配置的代码;
- Element 游戏中的精灵,继承自Sprite,用于播放各种动画;
- GameLayer 负责显示游戏界面,并和Backend 进行互动;
- Types 数据类型的定义
地图编辑
借助tiled编辑器用户可根据自己的喜好自行编辑各种“奇形怪状”的地图导入到游戏中。编辑规则也非常简单,如下:
在tiled地图中,任何图块都表示为该区域会出现精灵。没有区域没有图块,则该区域不会出现精灵。左上角的图层名称表示精灵种类的数量(DEMO中默认为9)。值得注意的是地图顶部如果有多个凸出部份,那么他们的高度必须一致。因为新的精灵总是从最顶部掉下,并且最后下落不会上升(需求如此,这不是BUG)。
使用代码如下:
// 创建游戏图层 auto layer = GameLayer::create(); layer->SetMap(Config::GetInstance()->ReadMapConfig("map/map.tmx")); addChild(layer);
配置文件
为了方便修改游戏参数,我做了一个配置文件。文件位于Resources/config/config.json。
{ "Width": 74, // 精灵图片宽度 "Height": 73, // 精灵图片高度 "TypeQuantity" : 9, // 最大精灵类型数量 "MoveTime": 0.25, // 移动耗时 "FallDownTime": 0.10 // 下落耗时 }
源码下载
https://github.com/zhangpanyi/Eliminate
转载请注明出处:http://www.cnblogs.com/zhangpanyi/
时间: 2024-10-29 00:58:43