Skip to content

Latest commit

 

History

History
96 lines (84 loc) · 3.89 KB

README.md

File metadata and controls

96 lines (84 loc) · 3.89 KB

项目名称:雷霆战机

开发环境:windows10,jdk11
编译器:IDEA
基础:oop面向对象(类、继承、多态、抽象)
配置常量类:com.areco.plane.tools.Config
辅助工具类:com.areco.plane.tools.GameTools

游戏说明:

使用方向键鼠标控制飞机移动
使用a键或sd键开火
a键释放导弹,在第一关的伤害为13
s键释放机枪,每颗子弹伤害为1
d键释放激光,具有穿透效果,每秒伤害60
使用 f 释放大招,释放大招时玩家无敌,释放完毕后武器冷却5秒
BOSS在场上有其他敌机时是无敌状态,即没有出现血条时是无敌状态

默认设置:

玩家被子弹击中则无敌500毫秒
玩家的子弹射击频率限制为200毫秒,每种武器的攻击频率都不一样
高智商敌机的出现概率为1/3
BOSS为高智商机,会跟踪玩家,有时又会随机移动
并且会有针对性的跟踪子弹,大型子弹攻击力为5
当进入BOSS战时玩家被击中后的无敌时间降为200毫秒


使用的基本方法

  1. awt
  2. 文件流
  3. 音乐播放
  4. 绘图方法
  5. 窗口组件
  6. 线程

使用的库

jl1.0.1.jar:Java 工具库,用以播放声音


项目构建

第一步: 画出游戏主界面
第二步: 游戏背景图画到主界面

  1. 建立一个工具类读取文件
  2. 加载图片
  3. 绘制地图
  4. 让地图动起来

第三步: 绘制玩家飞机

  1. 给玩家飞机添加火焰
  2. 给玩家添加键盘事件
  3. 添加子弹(导弹a,机枪s,激光d)

第四步: 创建敌机

  1. 随机产生指定配置的敌机
  2. 判断当敌机数量小于指定值时候自动添加新的敌机
  3. 创建敌机弹花

第五步:消灭敌机

  1. 通过坐标x,坐标y,宽度width,高度height
  2. 判断我方子弹区域与敌机区域重合.
  3. 可通过字段内缩敌机判定区域.

第六步:我方飞机被击中的判定

  1. 通过坐标x,坐标y,宽度width,高度height
  2. 判断敌方子弹区域与玩家机区域重合.
  3. 可通过字段内缩敌机判定区域.

第七步:优化完善

  1. 添加高智商飞机
  2. 根据我方飞机坐标进行针对性移动
  3. 通过变量控制高智商飞机的数量
  4. 添加分数与血量显示
  5. 添加被击败时的选项:重新开始,退出游戏
  6. 添加被摧毁后的爆炸效果,玩家被摧毁后等待爆炸完毕再弹出选项
  7. 添加血量过低后变色
  8. 为激光,导弹,机枪,爆炸添加声音,添加循环播放的背景音乐
  9. 当运行游戏后,鼠标将被定位到指定位置,并隐藏鼠标指针
  10. 限制玩家开火间隔,设置玩家被击中后的无敌时间
  11. 修改血量条的显示方式,当血量变化时渐变式变化
  12. 为玩家飞机添加大招按键 f ,添加大招子弹
  13. 添加能量条,渐变式更改,释放大招时得到的能量将被缓冲,在大招结束后重新加上
  14. 屏蔽玩家释放大招时的所有开火,并且大招释放完毕后有冷却时间
  15. 抽出多个常量,自定义参数
  16. 为敌机BOSS添加无敌,当场上有除BOSS以外的敌机时,BOSS无敌
  17. 玩家发动大招时给玩家一个无敌
  18. 玩家大招后进入无法攻击的冷却阶段时进行屏幕提示

第八步:关卡系统

  1. 添加5个关卡
  2. 添加5个关卡boss,boss将在每个关卡各自指定的时间出现,出现后将不会出现其他敌机
  3. 为boss绘制不同的子弹类型
  4. 其中将绘制随机运动型子弹,跟踪型子弹,加强跟踪型子弹
  5. 每过一关玩家开火间隔降低,打boss时玩家的无敌时间降低
  6. boss被击败后进入下一个关卡,并奖励20分
  7. 根据关卡的不同绘制不同的敌机,血量增加,攻击欲望增加,数量增加

演示视频

演示视频链接