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