设计目标:
高质量的代码要有这些优点:
复用性好、扩展性好、维护性好、
可移植性好、健壮性好、效率好、可读性好…
所以设计代码的时候不要只想到功能的实现,还要考虑功能的扩展及代码复用等
设计规则:
- 需求分析
- 抽取共性,设计超类和派生类中的属性和方法(数据私有化,行为公开化)
- 将所有派生类所共有的属性和行为,抽到超类中-----抽共性
- 若所有派生类的行为都一样,设计为普通方法
若所有派生类的行为都不一样,设计为抽象方法 - 将部分派生类所共有的行为,抽到接口中
接口是对继承的单根性的扩展-------------多继承
- 功能实现(行为公开化)
做功能的步骤:
- 先写行为:
若为对象所特有的行为,就将方法设计在对应的类中
若为所有对象所共有的行为,就将方法设计在超类中 - 然后在窗口调用:
1)定时触发的,在定时器中调用
2)事件触发的,在侦听器中调用
射击游戏需求:
- 所参与的角色:
英雄机、子弹、小敌机、大敌机、小蜜蜂、天空 - 对象间的关系:
- 英雄机可以发射子弹(单倍火力(0)、双倍火力(>0))
- 子弹可以射击敌人(小敌机、大敌机、小蜜蜂)
- 打掉小敌机,玩家得1分
- 打掉大敌机,玩家得3分
- 打掉小蜜蜂,英雄机得奖励(1条命、40火力值)
发射一次双倍火力,则火力值减2
- 英雄机、子弹、小敌机、大敌机、小蜜蜂都在天空上飞
- 敌人撞到英雄机,则英雄机减1条命,同时清空火力值
- 判断游戏状态:
- 英雄机命数为0时,则游戏结束,
- 游戏运行时,鼠标移出界外游戏暂停,移入游戏继续,
- 游戏结束界面点击鼠标重新开始一局游戏
射击游戏中的对象类:
- 找对象:英雄机、小敌机、大敌机、小蜜蜂、子弹、天空
- 抽类:Hero、Airplane、BigAirplane、Bee、Bullet、Sky
- 类中的属性
-
超类:
- 数据:宽、高、x、y、状态(存活,爆破,移除)、飞行速度
- 行为:构造函数(敌人x、y随机生成,另三种需要传入,所以需要重载)、飞行(step)、判断是否越界、碰撞、状态判断(三种)、goDead、画图
-
Enemy接口:得分接口
-
Award接口:奖励接口
-
Hero:
命数life、火力值doubleFire、随鼠标移动moveTo()、射出子弹、生命和火力加减、 -
Airplane:
得分 -
BigAirplane:
得分 -
Bullet:
-
Bee:
xSpeed、ySpeed、奖励类型,奖励类型的方法 -
Sky:
y1(需要画两张图实现无缝连接) -
images:各种图片数据的读取功能
-
world:有窗口宽高和各种状态常量,界面各种功能
-
功能实现
- 生成敌人
- 敌人和子弹入场
- 飞行物实现移动
- 子弹击中敌人:改变飞行物的状态,并获得分数和奖励
- 英雄机被撞:改变敌机状态,改变英雄机的命和火力
- 移除:越界和remove状态的对象移除
- 画图
- 侦听器事件:侦听鼠标操作,改变游戏状态及英雄机位置
- 定时器:重复执行,完成动态画面
游戏下载:
链接: https://pan.baidu.com/s/1x8a6F47NGK5Pcu8e0Cc1og 提取码: ugb6