打飞机小游戏

设计目标:

高质量的代码要有这些优点:
复用性好、扩展性好、维护性好、
可移植性好、健壮性好、效率好、可读性好…
所以设计代码的时候不要只想到功能的实现,还要考虑功能的扩展及代码复用等

设计规则:

  1. 需求分析
  2. 抽取共性,设计超类和派生类中的属性和方法(数据私有化,行为公开化
  • 将所有派生类所共有的属性和行为,抽到超类中-----抽共性
  • 若所有派生类的行为都一样,设计为普通方法
    若所有派生类的行为都不一样,设计为抽象方法
  • 将部分派生类所共有的行为,抽到接口中
    接口是对继承的单根性的扩展-------------多继承
  1. 功能实现(行为公开化)
    做功能的步骤:
  • 先写行为:
    若为对象所特有的行为,就将方法设计在对应的类中
    若为所有对象所共有的行为,就将方法设计在超类中
  • 然后在窗口调用:
    1)定时触发的,在定时器中调用
    2)事件触发的,在侦听器中调用

射击游戏需求:

  • 所参与的角色:
    英雄机、子弹、小敌机、大敌机、小蜜蜂、天空
  • 对象间的关系:
  1. 英雄机可以发射子弹(单倍火力(0)、双倍火力(>0))
  2. 子弹可以射击敌人(小敌机、大敌机、小蜜蜂)
    1. 打掉小敌机,玩家得1分
    2. 打掉大敌机,玩家得3分
    3. 打掉小蜜蜂,英雄机得奖励(1条命、40火力值)
      发射一次双倍火力,则火力值减2
  3. 英雄机、子弹、小敌机、大敌机、小蜜蜂都在天空上飞
  4. 敌人撞到英雄机,则英雄机减1条命,同时清空火力值
  5. 判断游戏状态:
    • 英雄机命数为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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值