机战风云 (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
标准射击游戏体验。可选择简单 / 普通 / 困难难度,击杀敌人填充进度条,进度条满后召唤 Boss。击败 Boss 进入下一轮,难度递增。
初始属性极低(1 条命、无升级),一切从零开始。每击败一个 Boss 可从 3 个随机增益中选择一个永久生效。每次选择增益后难度提升一级,挑战极限分数。
可用增益:攻击强化 (+10%)、攻击精通 (+20%)、射速提升 (+15%)、射速精通 (+30%)、生命 +1/+2、护盾、财富 (+25%)、大富翁 (+50%)、磁铁 (+50%)、僚机、暴击精通 (+20%)、速度提升 (+20%)、幸运儿 (+30%) 等 14 种。
每天随机生成新的挑战参数(敌人生成速率、Boss 频率、奖励倍率等),达成目标分数即为挑战成功,每天只能完成一次。
连续挑战 Boss,Boss 血量提升至 300%,测试玩家极限。记录最佳波次。
| 类型 | 颜色 | 血量 | 分数 | 特点 |
|---|---|---|---|---|
| 普通 | 红色 | 1 | 10 | 直线飞行 |
| 快速 | 橙色 | 1 | 20 | S 形蛇行移动 |
| 蜂群 | 青绿 | 1 | 8 | 极小极快,锯齿移动 |
| 坦克 | 紫色 | 2 | 50 | 会开火反击 |
| 狙击 | 深绿 | 1 | 35 | 发射高伤害狙击弹 |
游戏内置时间难度递增机制(每 25 秒难度等级 +1),随难度提升敌人血量和生成速度逐步增加。全局难度三档(简单 / 普通 / 困难),影响生成速率、敌人血量、敌我射速等参数。
击杀敌人填充进度条,进度条满后 Boss 出现。Boss 血量 = 40 + Boss序号 × 15 + 难度等级 × 10。Boss 拥有 5 种攻击模式:散射(5 发扇形子弹)、三连(三发并列)、螺旋(旋转扩散弹幕)、激光(直线穿透)、召唤(召唤蜂群助战)。
共 12 种 Boss:散射魔王、激光战舰、蜂群领主、狙击王者、螺旋魔神、爆破大师、幻影死神、钢铁堡垒、亡灵法师、风暴巨兽、深渊领主、终极霸主,每种对应一个专属成就。
| 图标 | 颜色 | 名称 | 效果 |
|---|---|---|---|
| ×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 |
科技树分为三大系,使用钻石解锁。技能有层级关系,需要先解锁前置技能。
攻击强化 I~III(伤害 +10%/+20%/+30%)、射速强化 I~III(射速 +15%/+30%/+50%)、暴击精通、弹射子弹、穿透弹、散射、吸血攻击、燃烧弹、冰冻弹、连锁闪电、玻璃大炮、钢铁意志、Boss 杀手、复仇 — 共 18 个技能。
生命强化 I~III(生命 +1/+2/+3)、护盾强化、无敌延长、护盾再生、反击护盾、复活术、闪避(15% 概率)、快速回复、回收利用、先发制人 — 共 12 个技能。
财富 I~II(金币 +25%/+50%)、经济大师(商店价格 -20%)、磁铁强化、磁铁大师(自动吸全屏)、僚机强化 I~II、幸运儿、幸运星、时间减速(10% 概率)、双倍金币(25% 概率)、弹药专家 — 共 12 个技能。
可重置所有科技,返还 50% 钻石。
商店支持两大分类:皮肤 和 升级。货币系统包含金币(击杀敌人掉落,用于购买皮肤和升级属性)和钻石(Boss 掉落,用于科技树解锁)。
| 升级项 | 基础价格 | 上限 | 每级效果 |
|---|---|---|---|
| 额外生命 | 300 | 5 | +1 初始生命 |
| 攻击力 | 250 | 3 | +1 子弹伤害 |
| 射速 | 200 | 3 | 减少发射间隔 |
| 暴击率 | 450 | 5 | +5% 暴击率 |
| 护盾耐久 | 400 | 2 | 护盾可抵挡次数 +1 |
| 磁铁范围 | 300 | 3 | 增加吸取范围 |
| 增益时长 | 350 | 3 | 增益球效果 +20% |
| 金币加成 | 250 | 3 | 击杀额外 +50% 金币 |
| 僚机 | 500 | 3 | 每级 +1 僚机 |
花费随等级递增:基础价格 × (等级 + 1)²。可重置所有升级,返还 50% 金币。
共包含 26 项成就,涵盖击杀、连击、生存、金币、皮肤、升级、Boss 挑战等维度:
以及 12 种 Boss 专属成就,每种 Boss 击败后解锁对应成就。
本游戏拥有独特的 实时合成音频系统,所有音效和背景音乐均在运行时由 Java javax.sound.sampled 实时生成,无需任何音频资源文件。
| 场景 | BPM | 风格 |
|---|---|---|
| 主界面 | 128 | 大气科技风 — 和弦进行 + 琶音 + 主旋律 + 鼓点 |
| 战斗中 | 160 | 激情电音摇滚 — 小调和弦 + 高速鼓点 + 激烈主音 |
| Boss 战 | 180 | 重金属史诗 — 黑暗和弦 + 双踩底鼓 + 沉重旋律 |
三种 BGM 根据游戏状态自动切换,切换时带 1 秒淡入/淡出过渡。
射击(~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,零外部依赖。