一、项目概述

机战风云 (Aircraft War) 是一款以太空为背景的 2D 纵版飞行射击游戏(STG),使用纯 Java Swing/AWT 开发,零外部依赖。玩家操控战机在星空中与各类敌机作战,击败 Boss 获取奖励,通过商店、科技树、皮肤等系统不断强化自己,挑战更高难度。

运行环境:JDK 17+ / Maven 3.x
构建产物:打包 JAR 约 150 KB(零依赖)
代码仓库:gitee.com/hueimelly/AircraftWar_java

核心特色:

• • •

二、快速开始

环境要求

编译运行

# 克隆项目
git clone https://gitee.com/hueimelly/AircraftWar_java.git
cd AircraftWar_java

# 使用 Maven Wrapper 编译
mvnw clean package

# 运行游戏
java -jar target/aircraft-war-1.0-SNAPSHOT-jar-with-dependencies.jarBash
• • •

三、游戏模式

3.1 经典模式

标准射击游戏体验。可选择简单 / 普通 / 困难难度,击杀敌人填充进度条,进度条满后召唤 Boss。击败 Boss 进入下一轮,难度递增。

3.2 肉鸽模式(Roguelike)

初始属性极低(1 条命、无升级),一切从零开始。每击败一个 Boss 可从 3 个随机增益中选择一个永久生效。每次选择增益后难度提升一级,挑战极限分数。

可用增益:攻击强化 (+10%)、攻击精通 (+20%)、射速提升 (+15%)、射速精通 (+30%)、生命 +1/+2、护盾、财富 (+25%)、大富翁 (+50%)、磁铁 (+50%)、僚机、暴击精通 (+20%)、速度提升 (+20%)、幸运儿 (+30%) 等 14 种。

3.3 每日挑战

每天随机生成新的挑战参数(敌人生成速率、Boss 频率、奖励倍率等),达成目标分数即为挑战成功,每天只能完成一次。

3.4 Boss 速通(Boss Rush)

连续挑战 Boss,Boss 血量提升至 300%,测试玩家极限。记录最佳波次。

• • •

四、敌人与 Boss

4.1 敌人类型

类型颜色血量分数特点
普通红色110直线飞行
快速橙色120S 形蛇行移动
蜂群青绿18极小极快,锯齿移动
坦克紫色250会开火反击
狙击深绿135发射高伤害狙击弹

游戏内置时间难度递增机制(每 25 秒难度等级 +1),随难度提升敌人血量和生成速度逐步增加。全局难度三档(简单 / 普通 / 困难),影响生成速率、敌人血量、敌我射速等参数。

4.2 Boss 系统

击杀敌人填充进度条,进度条满后 Boss 出现。Boss 血量 = 40 + Boss序号 × 15 + 难度等级 × 10。Boss 拥有 5 种攻击模式:散射(5 发扇形子弹)、三连(三发并列)、螺旋(旋转扩散弹幕)、激光(直线穿透)、召唤(召唤蜂群助战)。

共 12 种 Boss:散射魔王、激光战舰、蜂群领主、狙击王者、螺旋魔神、爆破大师、幻影死神、钢铁堡垒、亡灵法师、风暴巨兽、深渊领主、终极霸主,每种对应一个专属成就。

4.3 增益球

图标颜色名称效果
×2蓝色双倍火力双发子弹,持续 10 秒
×3紫色三倍火力三发子弹,持续 5 秒
绿色护盾抵挡一次伤害
红色炸弹全屏攻击
+血粉色回血恢复 1 点生命
>>黄色射速提升射速增加,持续 8 秒
青色磁铁扩大金币吸引范围,持续 10 秒
• • •

五、皮肤系统

21 款 皮肤,每款拥有独立的机身形状(程序多边形渲染)、配色方案、子弹颜色和僚机颜色,无需任何精灵图资源。越贵的皮肤拥有越丰富的色彩和越复杂的机身形状。

#名称价格伤害加成
1蓝凤凰免费+0
2黄金帝王800+1
3赤红之龙1,500+1
4暗影利刃2,500+2
5霓虹冲击4,000+2
6圣光天使8,000+3
7暗黑恶魔10,000+3
8冰霜凤凰12,000+3
9烈焰凤凰12,000+3
10龙骑士15,000+3
11雷霆机甲18,000+3
12钛金战神20,000+3
13虚空行者22,000+4
14幽灵刺客25,000+4
15星辰之翼28,000+4
16太阳神翼30,000+4
17暗月猎手30,000+4
18电磁脉冲35,000+5
19生化毒液38,000+5
20量子核心42,000+6
21深渊领主50,000+6
• • •

六、科技树

科技树分为三大系,使用钻石解锁。技能有层级关系,需要先解锁前置技能。

攻击系(Attack)

攻击强化 I~III(伤害 +10%/+20%/+30%)、射速强化 I~III(射速 +15%/+30%/+50%)、暴击精通、弹射子弹、穿透弹、散射、吸血攻击、燃烧弹、冰冻弹、连锁闪电、玻璃大炮、钢铁意志、Boss 杀手、复仇 — 共 18 个技能。

防御系(Defense)

生命强化 I~III(生命 +1/+2/+3)、护盾强化、无敌延长、护盾再生、反击护盾、复活术、闪避(15% 概率)、快速回复、回收利用、先发制人 — 共 12 个技能。

辅助系(Support)

财富 I~II(金币 +25%/+50%)、经济大师(商店价格 -20%)、磁铁强化、磁铁大师(自动吸全屏)、僚机强化 I~II、幸运儿、幸运星、时间减速(10% 概率)、双倍金币(25% 概率)、弹药专家 — 共 12 个技能。

可重置所有科技,返还 50% 钻石。

• • •

七、商店系统

商店支持两大分类:皮肤升级。货币系统包含金币(击杀敌人掉落,用于购买皮肤和升级属性)和钻石(Boss 掉落,用于科技树解锁)。

升级项(共 9 种)

升级项基础价格上限每级效果
额外生命3005+1 初始生命
攻击力2503+1 子弹伤害
射速2003减少发射间隔
暴击率4505+5% 暴击率
护盾耐久4002护盾可抵挡次数 +1
磁铁范围3003增加吸取范围
增益时长3503增益球效果 +20%
金币加成2503击杀额外 +50% 金币
僚机5003每级 +1 僚机

花费随等级递增:基础价格 × (等级 + 1)²。可重置所有升级,返还 50% 金币。

• • •

八、成就系统

共包含 26 项成就,涵盖击杀、连击、生存、金币、皮肤、升级、Boss 挑战等维度:

01初出茅庐
02百战老兵
03千军万马
04Boss 猎人
05Boss 克星
06连击大师
07连击王者
08生存专家
09不死鸟
10金币猎人
11富可敌国
12时尚达人
13收藏家
14满级达人

以及 12 种 Boss 专属成就,每种 Boss 击败后解锁对应成就。

• • •

九、音效系统

本游戏拥有独特的 实时合成音频系统,所有音效和背景音乐均在运行时由 Java javax.sound.sampled 实时生成,无需任何音频资源文件。

背景音乐(BGM)

场景BPM风格
主界面128大气科技风 — 和弦进行 + 琶音 + 主旋律 + 鼓点
战斗中160激情电音摇滚 — 小调和弦 + 高速鼓点 + 激烈主音
Boss 战180重金属史诗 — 黑暗和弦 + 双踩底鼓 + 沉重旋律

三种 BGM 根据游戏状态自动切换,切换时带 1 秒淡入/淡出过渡。

音效(SFX)

射击(~66ms)、命中(~100ms)、击杀(~333ms 上升音调)、Boss 出现(~1s 低频警告)、受伤(~333ms 噪声冲击)、金币(~166ms 清脆双音)、增益球(~500ms 上升琶音)、炸弹(~500ms 低频爆炸)、死亡(~2s 下降音调)— 共 9 种音效。

• • •

十、技术架构

总体架构

Start.java (入口)
    → ScreenManager (屏幕管理)
        → MenuScreen → ModeSelectScreen
            → GameScreen | BossRushScreen | DailyChallengeScreen | Rogue Screen
        → ShopScreen | SkillTreeScreen | SettingsScreen
        → AchievementScreen | LeaderboardScreen | HelpScreen
    → model/ (游戏实体: Player, Enemy, Boss, Bullet, PowerUp...)
    → data/  (数据层: DataManager, Settings, Achievement, Skill...)
    → util/  (工具类: DrawUtils, ScaleUtil, UIConstants)Text

核心技术

技术用途
Java Swing / AWT界面渲染和交互
Java 2D Graphics API多边形绘制、渐变、抗锯齿
javax.sound.sampled实时音频合成输出
Maven项目构建管理
文件 I/O存档读写(save.dat / settings.properties)

设计模式

游戏循环

GameScreen 通过 javax.swing.Timer 以 60 FPS 固定帧率驱动,每帧执行:处理输入 → 更新游戏对象 → 碰撞检测 → 生成敌人/道具 → 绘制画面。

项目规模

45 个 Java 源文件,分布于 5 个包中,打包 JAR 仅约 150 KB,零外部依赖。