# 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. **用户友好**: 直观的界面和操作提示