改进飞碟(Hit UFO)游戏
游戏内容要求
- 按 adapter模式 设计图修改飞碟游戏
- 使它同时支持物理运动与运动学(变换)运动
adapter模式
适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。
该模式的主要优点如下。
客户端通过适配器可以透明地调用目标接口。
复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。
将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。
其缺点是:对类适配器来说,更换适配器的实现过程比较复杂。
物理运动
一个游戏对象加上刚体之后游戏引擎就会对其进行物理效果模拟。同时我们也可以给这个对象施加各种作用力,让它运动起来。另外如果要实现重力的效果,那么相应的游戏物体都必须附上刚体组件。
实现思路
要求按adapter模式,所以需要抽象出两个动作管理类在FirstSceneController类中使用的方法,作为一个接口IActionManager。其中CCActionManager类基本不变,再添加一个物理运动的类PhysicActionManager。
- 在SSActionManager类中添加一个属性flag,用来决定该使用哪个子类的方法。
- PhysicActionManager类与CCActionManager类类似,继承了SSActionManager类。需要在start()函数里添加对flag的修改,来反馈该使用哪个方法。
- 在FirstSceneManager类中修改动作管理器的类型为接口IActionManager,添加某些方法来影响IActionManager的具体实例。
- 在UserGUI中添加按钮代码给用户选择使用哪一种方式来使飞碟运动。
- 在DiskFactory中为新生成的对象添加刚体。