对本次任务的思考
这种游戏的游戏逻辑和呈现逻辑耦合度较高,开发时应一起编写和调试,如果先开发数据类和游戏逻辑,很容易和呈现逻辑出现对接不上的情况,而且在呈现逻辑未完成开发之前,游戏逻辑难以测试。所以应该先完成最小呈现逻辑和游戏逻辑的开发,完成整个代码的框架,再慢慢加功能。因此我认为本次任务非常不友好。
设计实现过程
游戏地图采用瓦片地图,Background
层完成图像的描述,meta
层描述元数据,以创建建筑及可碰撞体
RWorld
类为单例模式,完成全局Unit和Buff的注册,以确保所有数据对象在任何地方都可访问。此类同时负责游戏时间的统计。
Utils
命名空间包含工具类,目前包含CoordinateTransform
类完成坐标变换
所有单位均继承自Unit
,其中建筑继承自Building
,可移动角色继承自Character
技能继承自Skill
,增益效果继承自Buff
,以确保上层对其统一的访问方法
游戏主循环在MainScene::update()
代码说明
详见文档
代码见GitHub
最近Azure有点问题,稍后更新
花费时间
大部分时间都花在实验cocos2d-x的各种代码段和与Box2D的集成上,花在模型设计设计上的时间不多。实际上花了多少时间我也不大清楚
问题
数据类和cocos2d的连接方式
cocos2d-x的工厂构造和二段构造对于直接从cocos2d::Sprite进行多级继承以创建数据模型非常不友好,因此采用组合方式连接数据类和cocos2d。