前言css
你们好!本系列博文记录了炸弹人游戏迭代开发的过程。在开发的过程当中,代码会不断重构,领域模型会不断演变,高层划分也会不断变化。html
博文重点在于记录面向对象思想运用、重构、迭代开发的过程,对于游戏的实现细节和原理不会深刻讨论。html5
若是您对RPG游戏的基本概念不熟悉,我推荐您能够先看看HTML5研究小组第二期技术讲座《手把手制做HTML5游戏》,它讲解了Html5超级玛丽游戏开发的过程,提出了一些基本概念(如精灵、主循环等)。另外您能够学习它的代码HTML5超级玛丽小游戏源代码,您能够看到它是如何一步一步实现游戏的。git
但愿能与你们一块儿分享游戏开发的过程和乐趣,为你们运用oo思想和实践迭代开发提供力所能及的帮助。github
面向对象、测试驱动开发、重构、迭代、领域模型、炸弹人游戏算法
系列博文目录chrome
最终成果编程
下面是完成整个游戏开发后的成果,你们能够先预览一下。canvas
演示地址设计模式
游戏中包含了包含了多个画布,其中地图画布、炸弹画布、火焰画布分别对应地图层、炸弹层、火焰层,玩家画布和敌人画布对应人物层。下面是各个层的层叠顺序,地图层显示在最下面,人物层显示在最上面:
具体概念请见第2篇博文的“分层渲染”。
前期准备
如今,就让咱们一块儿踏上游戏开发的旅程。首先来看看在炸弹人游戏开发中须要的知识和参考的资源。
初步需求分析
下面来进行初步的需求分析。首先进行高层的需求分析;而后根据分析结果,输出用例、功能需求、非功能需求和约束条件。
如敌人使用A*算法寻路。
如显示地图、人物,实现人物移动动画。
玩家经过操做键盘来控制炸弹人的行为,所以游戏须要监听判断键盘事件。
炸弹人可以放置炸弹,炸弹可以爆炸并炸死敌人和炸弹人。
系统、玩家
炸弹人能够放炸弹。该角色由玩家控制。
敌人会追踪炸弹人。该角色由系统控制。
玩家进入游戏后,预先加载游戏使用的图片到内存中。
地图大小为20 * 20。
地图由墙和空地组成。
墙能够被炸开。
炸弹人、敌人不能穿过墙、炸弹。
炸弹人、敌人不能走出地图边界。
在地图上显示炸弹人和敌人。
炸弹人和敌人能够在地图上移动,并以动画显示。
使用A*算法寻找从敌人所在位置到炸弹人所在位置的路径,并按照路径移动。
若是遇到炸弹人,则游戏结束;若是走到终点时没有遇到炸弹人,则再次寻找路径,而后按照路径移动。
炸弹人移动时也能放炸弹
不能在一个方格叠加多个炸弹
炸弹能够爆炸,显示火焰
玩家、敌人不能穿过炸弹
炸弹能够炸掉墙
炸弹能够炸死玩家、敌人
可放置多个炸弹(3个),炸弹爆炸时会引爆在火力范围内的炸弹
玩家能够经过W、A、S、D键控制炸弹人的移动方向,一共有上下左右四个方向。
玩家可使用空格键控制炸弹人放置炸弹
经过记录日志、SVN提交日志、测试文档以及注释和相关的总结文档,开发人员能够理解游戏的架构设计(参照总结文档、代码)及实现(参照日志、测试文档、代码)。
如须要增长一个敌人时,只须要增长相应代码便可;须要增长一类敌人,只须要增长一个敌人子类及相应的客户端代码便可。不用修改已有的代码,符合开闭原则。
即在游戏中提炼出具备通用性的模块,供之后复用。
采用TDD开发,保证低耦合高内聚,加强可测试性。
无,由于开发炸弹人游戏仅为了我的学习,所以对性能等运行期质量没有要求。
采用迭代开发的方法,逐步细化。
本文参考资料
《软件架构设计》