119 lines
3.5 KiB
Markdown
119 lines
3.5 KiB
Markdown
# Boss战斗系统实现说明
|
||
|
||
## 功能概述
|
||
|
||
在路径一步步显示过程中,当遇到Boss时会弹出一个详细的Boss战斗界面,展示:
|
||
|
||
1. **Boss信息**: 显示所有Boss的血量和当前状态
|
||
2. **技能信息**: 显示玩家的所有技能(伤害、冷却时间、当前冷却状态)
|
||
3. **战斗策略**: 自动计算并显示每个Boss的最优击败策略
|
||
4. **实时战斗**: 可以一步步观看战斗过程,包括技能使用和冷却
|
||
|
||
## 实现的文件和功能
|
||
|
||
### 1. boss_fight_ui.py - Boss战斗界面
|
||
- **BossFightUI类**: 完整的Boss战斗可视化界面
|
||
- **功能特性**:
|
||
- 显示所有Boss血量和状态
|
||
- 显示玩家技能信息和冷却状态
|
||
- 实时战斗模拟(手动/自动模式)
|
||
- 战斗序列可视化
|
||
- 键盘和鼠标控制
|
||
|
||
### 2. 修改的主要文件
|
||
|
||
#### maze.py
|
||
- 添加了`boss_data`和`player_skills`属性
|
||
- 修改`next_path_step()`方法,检测Boss遭遇并返回详细信息
|
||
- 修改`load_game()`方法,支持加载Boss数据和玩家技能
|
||
|
||
#### simple_save_manager.py
|
||
- 修改`load_maze_from_json()`方法,支持从JSON文件加载Boss数据(`B`)和玩家技能(`PlayerSkills`)
|
||
|
||
#### main.py
|
||
- 集成Boss战斗界面
|
||
- 修改事件处理逻辑,优先处理Boss战斗界面事件
|
||
- 修改路径控制逻辑,遇到Boss时显示战斗界面
|
||
- 添加Boss战斗界面的绘制
|
||
|
||
## Boss数据格式
|
||
|
||
### JSON存档文件格式 (如 maze_15_15_2.json)
|
||
```json
|
||
{
|
||
"maze": [...],
|
||
"B": [11, 13, 8, 17], // Boss血量序列
|
||
"PlayerSkills": [
|
||
[6, 2], // 技能0: 伤害6, 冷却2
|
||
[2, 0], // 技能1: 伤害2, 冷却0
|
||
[4, 1] // 技能2: 伤害4, 冷却1
|
||
]
|
||
}
|
||
```
|
||
|
||
## 使用方式
|
||
|
||
### 游戏中操作
|
||
1. **生成迷宫**: 点击"生成"按钮
|
||
2. **加载存档**: 点击"读档"按钮(自动加载maze_15_15_2.json)
|
||
3. **路径显示**:
|
||
- 点击"下一步"或按空格键逐步显示路径
|
||
- 点击"自动播放"或按A键自动显示路径
|
||
4. **遇到Boss**: 自动弹出Boss战斗界面
|
||
|
||
### Boss战斗界面操作
|
||
- **自动播放**: 点击"自动"按钮或按A键
|
||
- **手动步进**: 点击"下一步"按钮或按空格键
|
||
- **重置战斗**: 点击"重置"按钮或按R键
|
||
- **关闭界面**: 点击X按钮或按ESC键
|
||
|
||
## 战斗策略算法
|
||
|
||
使用分支限界法(A*算法)计算最优战斗策略:
|
||
- **目标**: 用最少回合数击败所有Boss
|
||
- **约束**: 技能冷却时间限制
|
||
- **输出**: 每个Boss对应的技能使用序列
|
||
|
||
### 技能序列说明
|
||
- **数字(0,1,2等)**: 表示使用对应索引的技能
|
||
- **-1**: 表示等待(所有技能冷却-1,但不使用任何技能)
|
||
|
||
## 视觉效果
|
||
|
||
### Boss战斗界面特性
|
||
- **Boss状态**:
|
||
- 绿色: 已击败
|
||
- 红色: 当前正在战斗
|
||
- 灰色: 尚未到达
|
||
- **技能状态**:
|
||
- 彩色: 技能可用
|
||
- 灰色: 技能冷却中(显示剩余冷却时间)
|
||
- **战斗进度**:
|
||
- 显示当前回合数
|
||
- 显示当前Boss剩余血量
|
||
- 高亮当前要执行的动作
|
||
|
||
## 测试功能
|
||
|
||
### 独立测试
|
||
运行`test_boss_ui.py`可以单独测试Boss战斗界面:
|
||
```bash
|
||
python test_boss_ui.py
|
||
```
|
||
|
||
### 完整测试
|
||
运行主程序并加载包含Boss数据的存档:
|
||
```bash
|
||
python main.py
|
||
# 点击"读档"按钮加载maze_15_15_2.json
|
||
# 逐步显示路径直到遇到Boss
|
||
```
|
||
|
||
## 技术特点
|
||
|
||
1. **模块化设计**: Boss战斗界面独立封装,易于维护
|
||
2. **事件驱动**: 支持键盘和鼠标操作
|
||
3. **实时反馈**: 实时显示战斗状态和进度
|
||
4. **可扩展性**: 易于添加新的技能类型和Boss类型
|
||
5. **用户友好**: 直观的界面和操作提示
|