Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

机战风云 (Aircraft War)

一款使用纯 Java Swing/AWT 开发的 2D 飞行射击游戏,无需任何外部依赖。

目录


游戏简介

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

核心特色:

  • 4 种游戏模式:经典、肉鸽、每日挑战、Boss 速通
  • 21 款战机皮肤,每款拥有独立机身形状、配色和子弹特效
  • 40+ 科技技能,含攻击/防御/辅助三大系
  • 实时合成的背景音乐(主界面 128 BPM / 战斗 160 BPM / Boss 180 BPM)
  • 所有音效均为程序实时合成,无需任何音频资源文件
  • 全中文/英文双语支持
  • 纯 Java SE,零外部依赖

快速开始

环境要求

  • JDK 17+
  • Maven 3.x(或使用项目自带的 Maven Wrapper)
  • 操作系统:Windows / macOS / Linux

编译运行

# 使用 Maven Wrapper(推荐)
mvnw clean package
java -jar target\aircraft-war-1.0-SNAPSHOT-jar-with-dependencies.jar

# 或使用 Maven
mvn clean package
java -jar target\aircraft-war-1.0-SNAPSHOT-jar-with-dependencies.jar

注:mvnw.cmd(Windows)或 ./mvnw(macOS/Linux)为项目自带的 Maven Wrapper,会自动下载对应版本 Maven。


操作说明

操作 按键 说明
移动 鼠标移动 控制战机在屏幕内任意移动
射击 自动 战机持续自动开火
炸弹 Space 全屏清除所有敌人和子弹
暂停 ESC 暂停/继续游戏
返回 点击界面上的 ← 返回 按钮 返回上一级菜单

游戏模式

经典模式

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

肉鸽模式(Roguelike)

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

可用增益列表:

增益 效果
攻击强化 伤害 +10%
攻击精通 伤害 +20%
射速提升 射速 +15%
射速精通 射速 +30%
生命 +1 最大生命 +1
生命 +2 最大生命 +2
护盾 获得一个护盾
财富 金币掉落 +25%
大富翁 金币掉落 +50%
磁铁 磁铁范围 +50%
僚机 获得一个僚机
暴击精通 暴击率 +20%
速度提升 移动速度 +20%
幸运儿 增益球掉落率 +30%

每日挑战

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

Boss 速通(Boss Rush)

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


敌人系统

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

难度系统

游戏内置时间难度递增机制(每 25 秒难度等级 +1)。随着难度提升,敌人的血量和生成速度会逐渐增加。

此外,在设置中可选择整体难度:

难度 生成速率 敌人血量 敌人速度 敌人射击间隔 玩家射速
简单 60% 60% 70% 150% +2 级
普通 120% 100% 100% 100% 不变
困难 180% 200% 120% 70% -1 级

Boss 系统

Boss 生成机制

击杀敌人填充进度条,进度条满后 Boss 出现。Boss 血量计算公式:

Boss 血量 = 40 + Boss序号 × 15 + 难度等级 × 10

Boss 攻击模式

攻击模式 描述
散射 5 发扇形子弹
三连 三发并列下坠
螺旋 旋转扩散弹幕
召唤 召唤蜂群小怪助战

Boss 类型(共 12 种)

散射魔王、激光战舰、蜂群领主、狙击王者、螺旋魔神、爆破大师、幻影死神、钢铁堡垒、亡灵法师、风暴巨兽、深渊领主、终极霸主

每种 Boss 对应一个专属成就。


增益球

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

货币系统

货币 图标 获取方式 用途
金币 $ 击杀敌人掉落 商店购买皮肤、升级属性
钻石 Boss 掉落 科技树解锁技能

商店系统

商店支持两大分类:皮肤升级

升级项(共 9 种)

每项升级有等级上限,花费随等级递增(基础价格 × (等级+1)²)。

升级项 基础价格 上限 每级效果
额外生命 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 僚机

可重置所有升级,返还 50% 金币。


皮肤系统

21 款 皮肤,每款拥有独立的机身形状、配色方案、子弹颜色和僚机颜色。

提示:越贵的皮肤拥有越丰富的色彩和越复杂的机身形状。

# 名称 ID 价格 形状类型
1 蓝凤凰 default 免费 箭形流线
2 黄金帝王 gold 800 三角翼轰炸机
3 赤红之龙 dragon 1,500 锐利战斗机
4 暗影利刃 stealth 2,500 狭长隐形
5 霓虹冲击 neon 4,000 未来感棱角
6 圣光天使 angel 8,000 天使翅膀
7 暗黑恶魔 demon 10,000 恶魔翅膀
8 冰霜凤凰 frost 12,000 凤凰展翅
9 烈焰凤凰 flame_phoenix 12,000 凤凰展翅
10 龙骑士 dragon_knight 15,000 龙形
11 雷霆机甲 mech 18,000 机械装甲
12 钛金战神 titan 20,000 重型装甲
13 虚空行者 void 22,000 虚空能量
14 幽灵刺客 ghost 25,000 幽灵形态
15 星辰之翼 cosmic 28,000 星辰
16 太阳神翼 solar 30,000 太阳
17 暗月猎手 lunar 30,000 月亮
18 电磁脉冲 pulse 35,000 电磁脉冲
19 生化毒液 venom 38,000 生化毒液
20 量子核心 quantum 42,000 量子
21 深渊领主 abyss 50,000 深渊

皮肤伤害加成

部分皮肤提供子弹伤害加成:

伤害加成 皮肤
+0 蓝凤凰
+1 黄金帝王、赤红之龙
+2 暗影利刃、霓虹冲击
+3 圣光天使、暗黑恶魔、冰霜凤凰、烈焰凤凰、龙骑士、雷霆机甲、钛金战神
+4 虚空行者、幽灵刺客、星辰之翼、太阳神翼、暗月猎手
+5 电磁脉冲、生化毒液
+6 量子核心、深渊领主

机身形状

所有皮肤使用程序多边形渲染绘制,无需任何精灵图(Sprite)资源。每个形状类型对应一套独立的多边形绘制算法。


科技树

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

攻击系(Attack)

技能 钻石消耗 层级 前置 效果
攻击强化 I 5 0 - 伤害 +10%
攻击强化 II 10 1 攻击强化 I 伤害 +20%
攻击强化 III 20 2 攻击强化 II 伤害 +30%
射速强化 I 5 0 - 射速 +15%
射速强化 II 10 1 射速强化 I 射速 +30%
射速强化 III 20 2 射速强化 II 射速 +50%
暴击精通 15 1 攻击强化 I 暴击率 +20%,暴击伤害 ×2
弹射子弹 8 0 射速强化 I 子弹命中后弹射到附近敌人
穿透弹 8 0 攻击强化 I 子弹穿透,最多穿透 2 个
散射 8 0 - 子弹数量 +1
吸血攻击 8 0 - 击杀恢复 1 点生命
燃烧弹 12 1 弹射子弹 子弹附加燃烧效果,持续 3 秒
冰冻弹 12 1 穿透弹 子弹减速敌人 40%,持续 2 秒
连锁闪电 15 1 吸血攻击 击杀时对周围敌人造成连锁伤害
玻璃大炮 15 1 攻击强化 II 伤害 +60%,最大生命 -1
钢铁意志 12 1 攻击强化 II 生命低于 50% 时伤害 +35%
Boss 杀手 25 2 钢铁意志 对 Boss 伤害 +50%
复仇 20 2 玻璃大炮 受伤后 3 秒内攻击力 +30%

防御系(Defense)

技能 钻石消耗 层级 前置 效果
生命强化 I 5 0 - 生命 +1
生命强化 II 10 1 生命强化 I 生命 +2
生命强化 III 20 2 生命强化 II 生命 +3
护盾强化 8 0 - 初始获得护盾
无敌延长 12 1 护盾强化 受伤无敌时间 +50%
护盾再生 12 1 护盾强化 护盾被破坏后 5 秒自动再生
反击护盾 20 2 护盾再生 护盾被打破时释放冲击波造成 2 点伤害
复活术 25 2 生命强化 II 死亡时复活一次(每局)
闪避 8 0 - 15% 概率闪避伤害
快速回复 8 0 生命强化 I 无敌时间缩短 40%,回复量提升
回收利用 8 0 - 击杀恢复少量弹药
先发制人 15 1 - 开局获得 10 秒火力强化

辅助系(Support)

技能 钻石消耗 层级 前置 效果
财富 I 5 0 - 金币掉落 +25%
财富 II 10 1 财富 I 金币掉落 +50%
经济大师 25 2 财富 II 商店物品价格降低 20%
磁铁强化 8 0 - 磁铁范围 +50%
磁铁大师 12 1 磁铁强化 自动吸取全屏掉落物
僚机强化 15 1 - 僚机伤害 +30%
僚机强化 II 25 2 僚机强化 僚机伤害 +60%,额外获得一架僚机
幸运儿 12 1 - 增益球掉落率 +20%
幸运星 8 0 - 增益球效果持续时间 +30%
时间减速 15 1 幸运星 10% 概率触发时间减速
双倍金币 8 0 - 25% 概率获得双倍金币
弹药专家 8 0 - 双倍/三倍火力持续时间 +50%

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


成就系统

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

成就 条件
初出茅庐 首次击杀敌人
百战老兵 累计击杀 100 个敌人
千军万马 累计击杀 1000 个敌人
Boss 猎人 首次击败 Boss
Boss 克星 累计击败 10 个 Boss
连击大师 达成 10 连击
连击王者 达成 25 连击
生存专家 存活超过 5 分钟
不死鸟 单局不受伤通关
金币猎人 累计获得 1000 金币
富可敌国 累计获得 10000 金币
时尚达人 购买第一个皮肤
收藏家 拥有所有皮肤
满级达人 任意升级达到满级
散射克星 击败散射魔王
激光终结者 击败激光战舰
... 共 12 种 Boss 类型成就

音效系统

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

背景音乐(BGM)

三轨背景音乐,根据游戏状态自动切换,切换时带 1 秒淡入/淡出过渡:

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

音效(SFX)

音效 时长 描述
射击 ~66ms 短促高频
命中 ~100ms 中频冲击
击杀 ~333ms 上升音调
Boss 出现 ~1s 低频警告
受伤 ~333ms 噪声冲击
金币 ~166ms 清脆双音
增益球 ~500ms 上升琶音
炸弹 ~500ms 低频爆炸
死亡 ~2s 下降音调

设置功能

设置项 可选项 说明
语言 中文 / English 全局中英文切换
难度 简单 / 普通 / 困难 影响敌人强度
震屏效果 开 / 关 受击时屏幕震动
自动瞄准 开 / 关 自动瞄准最近敌人
音效 开 / 关 控制所有音频
粒子效果 低 / 中 / 高 爆炸粒子密度
屏幕大小 900×700 / 1280×720 / 1920×1080 窗口分辨率

所有设置自动持久化到 settings.properties 文件。


技术架构

总体架构

┌─────────────────────────────────────┐
│           Start.java (入口)          │
├─────────────────────────────────────┤
│         ScreenManager (屏幕管理)       │
├─────────────────────────────────────┤
│  MenuScreen  →  ModeSelectScreen     │
│      ↓         ↓        ↓        ↓  │
│  GameScreen | BossRush | Daily  | Rogue │
├─────────────────────────────────────┤
│  ShopScreen | SkillTree | Settings  │
│  Leaderboard | Achievement | Help   │
├─────────────────────────────────────┤
│   model/ (游戏实体)    data/ (数据层)  │
│   util/  (工具类)                    │
└─────────────────────────────────────┘

核心技术

技术 用途
Java Swing / AWT 界面渲染和交互
Java 2D Graphics API 多边形绘制、渐变、抗锯齿
javax.sound.sampled 实时音频合成输出
Maven 项目构建管理
java.util.Properties 设置持久化
文件 I/O 存档读写
单例模式 DataManagerSettingsSoundManagerStarField
策略模式 多种敌人类型共享 Enemy 抽象
观察者模式 Timer 驱动游戏循环

游戏循环

// GameScreen 通过 javax.swing.Timer 驱动
// 60 FPS 固定帧率,每帧执行:
// 1. 处理输入(鼠标/键盘)
// 2. 更新游戏对象位置和状态
// 3. 碰撞检测
// 4. 生成敌人/道具
// 5. 绘制画面

项目结构

Aircraft_War/
├── pom.xml                     # Maven 构建配置
├── mvnw / mvnw.cmd            # Maven Wrapper
├── save.dat                    # 游戏存档(运行时生成)
├── settings.properties         # 用户设置(运行时生成)
├── src/
│   ├── main/
│   │   ├── java/com/aircraftwar/
│   │   │   ├── Start.java              # 入口点
│   │   │   ├── GameScreen.java         # 主游戏画面
│   │   │   ├── ScreenManager.java      # 屏幕管理器
│   │   │   ├── data/                   # 数据层
│   │   │   │   ├── Achievement.java    # 成就定义
│   │   │   │   ├── DataManager.java    # 存档管理
│   │   │   │   ├── RoguelikeBuff.java  # 肉鸽增益
│   │   │   │   ├── Settings.java       # 设置管理
│   │   │   │   ├── Skill.java          # 技能定义
│   │   │   │   └── TextResources.java  # 多语言文本
│   │   │   ├── model/                  # 游戏模型
│   │   │   │   ├── Player.java         # 玩家(含皮肤绘制)
│   │   │   │   ├── Enemy.java          # 敌人抽象基类
│   │   │   │   ├── BasicEnemy.java     # 普通敌人
│   │   │   │   ├── FastEnemy.java      # 快速敌人
│   │   │   │   ├── SwarmEnemy.java     # 蜂群敌人
│   │   │   │   ├── TankEnemy.java      # 坦克敌人
│   │   │   │   ├── SniperEnemy.java    # 狙击敌人
│   │   │   │   ├── BossEnemy.java      # Boss
│   │   │   │   ├── Bullet.java         # 子弹
│   │   │   │   ├── PowerUp.java        # 增益球
│   │   │   │   ├── Coin.java           # 金币
│   │   │   │   ├── Explosion.java      # 爆炸特效
│   │   │   │   ├── Wingman.java        # 僚机
│   │   │   │   ├── Skin.java           # 皮肤定义
│   │   │   │   ├── StarField.java      # 星空背景
│   │   │   │   ├── SoundManager.java   # 音效管理
│   │   │   │   ├── GameConfig.java     # 配置常量
│   │   │   │   ├── GameObject.java     # 对象基类
│   │   │   │   └── LeaderboardEntry.java # 排行榜条目
│   │   │   ├── screens/                # 界面
│   │   │   │   ├── MenuScreen.java     # 主菜单
│   │   │   │   ├── ModeSelectScreen.java # 模式选择
│   │   │   │   ├── ShopScreen.java     # 商店
│   │   │   │   ├── SkillTreeScreen.java # 科技树
│   │   │   │   ├── SettingsScreen.java # 设置
│   │   │   │   ├── AchievementScreen.java # 成就
│   │   │   │   ├── LeaderboardScreen.java # 排行榜
│   │   │   │   ├── HelpScreen.java     # 游戏说明
│   │   │   │   ├── BossRushScreen.java # Boss速通
│   │   │   │   ├── DailyChallengeScreen.java # 每日挑战
│   │   │   │   └── DevInfoScreen.java  # 开发者信息
│   │   │   └── util/                   # 工具类
│   │   │       ├── DrawUtils.java      # 绘制工具
│   │   │       ├── DrawCache.java      # 绘制缓存
│   │   │       ├── ScaleUtil.java      # 缩放工具
│   │   │       └── UIConstants.java    # UI常量
│   │   └── resources/images/
│   │       └── avatar.jpg              # 头像图片
│   └── test/                           # 测试(空)
└── target/                             # 编译输出

总计:45 个 Java 源文件,分布于 5 个包中。


构建与运行

完整构建

# 克隆项目后
mvn clean package

# 构建产物
target/
├── aircraft-war-1.0-SNAPSHOT.jar                    # 普通 JAR
└── aircraft-war-1.0-SNAPSHOT-jar-with-dependencies.jar  # 完整 JAR(推荐)

直接运行

java -jar target/aircraft-war-1.0-SNAPSHOT-jar-with-dependencies.jar

开发调试

推荐使用 IntelliJ IDEA 打开项目,项目已包含 .idea/ 配置目录。


存档文件

文件 说明
save.dat 游戏存档(金币、钻石、皮肤、升级、科技、成就、排行榜等)
save.dat.bak 存档备份
settings.properties 用户设置(语言、难度、音效、分辨率等)

这些文件在游戏运行时自动生成和更新,已被 .gitignore 排除。


开发者信息

  • 开发者: 张杰
  • 联系方式: 13955918302
  • 技术栈: Java 2D 多边形渲染、实时音频合成、Swing UI

许可

本项目为个人开发作品,仅供学习和交流使用。

About

一款使用纯 Java Swing/AWT 开发的 2D 飞行射击游戏,无需任何外部依赖。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages