修正了boss_fight,添加了样例
BIN
BOSS战样例/boss_case_1.gif
Normal file
After Width: | Height: | Size: 191 KiB |
1
BOSS战样例/boss_case_1.json
Normal file
@ -0,0 +1 @@
|
||||
{"B":[11,13,8,17],"PlayerSkills":[[6,2],[2,0],[4,1]],"min_turns":13,"actions":[0,2,1,2,0,2,1,0,1,2,0,1,2]}
|
BIN
BOSS战样例/boss_case_2.gif
Normal file
After Width: | Height: | Size: 207 KiB |
1
BOSS战样例/boss_case_2.json
Normal file
@ -0,0 +1 @@
|
||||
{"B":[19,17,14,19],"PlayerSkills":[[6,2],[9,5],[5,3],[4,3],[2,0]],"min_turns":13,"actions":[1,0,3,2,0,4,3,2,1,0,3,2,0]}
|
BIN
BOSS战样例/boss_case_3.gif
Normal file
After Width: | Height: | Size: 72 KiB |
1
BOSS战样例/boss_case_3.json
Normal file
@ -0,0 +1 @@
|
||||
{"B":[11,7,18],"PlayerSkills":[[10,1],[11,4],[11,5],[3,0],[4,4]],"min_turns":4,"actions":[2,0,1,0]}
|
BIN
BOSS战样例/boss_case_4.gif
Normal file
After Width: | Height: | Size: 58 KiB |
1
BOSS战样例/boss_case_4.json
Normal file
@ -0,0 +1 @@
|
||||
{"B":[13,11],"PlayerSkills":[[3,2],[1,0],[10,2],[5,1]],"min_turns":4,"actions":[2,0,3,2]}
|
BIN
BOSS战样例/boss_case_5.gif
Normal file
After Width: | Height: | Size: 203 KiB |
1
BOSS战样例/boss_case_5.json
Normal file
@ -0,0 +1 @@
|
||||
{"B":[13,18,19,14],"PlayerSkills":[[4,1],[3,2],[5,2],[9,4],[2,0]],"min_turns":13,"actions":[3,0,1,2,0,3,2,0,1,2,4,3,2]}
|
BIN
BOSS战样例/boss_case_6.gif
Normal file
After Width: | Height: | Size: 142 KiB |
1
BOSS战样例/boss_case_6.json
Normal file
@ -0,0 +1 @@
|
||||
{"B":[20,10,20],"PlayerSkills":[[1,0],[9,4],[10,5]],"min_turns":11,"actions":[1,2,0,0,0,1,0,2,0,0,1]}
|
BIN
BOSS战样例/boss_case_7.gif
Normal file
After Width: | Height: | Size: 88 KiB |
1
BOSS战样例/boss_case_7.json
Normal file
@ -0,0 +1 @@
|
||||
{"B":[15,18],"PlayerSkills":[[3,0],[2,1],[10,5]],"min_turns":7,"actions":[2,0,0,0,0,0,2]}
|
BIN
BOSS战样例/boss_case_8.gif
Normal file
After Width: | Height: | Size: 76 KiB |
1
BOSS战样例/boss_case_8.json
Normal file
@ -0,0 +1 @@
|
||||
{"B":[14,14],"PlayerSkills":[[3,0],[6,2],[4,1],[4,1],[9,3]],"min_turns":5,"actions":[4,1,2,3,4]}
|
BIN
BOSS战样例/boss_case_9.gif
Normal file
After Width: | Height: | Size: 140 KiB |
1
BOSS战样例/boss_case_9.json
Normal file
@ -0,0 +1 @@
|
||||
{"B":[13,13,20],"PlayerSkills":[[9,5],[3,0]],"min_turns":13,"actions":[0,1,1,1,1,1,1,1,0,1,1,1,1]}
|
@ -150,25 +150,4 @@ if __name__ == '__main__':
|
||||
print(f"总步数: {len(full_sequence)}")
|
||||
else:
|
||||
print("无解 - 无法击败所有Boss")
|
||||
|
||||
# if result:
|
||||
# print("每个Boss的最优攻击序列:")
|
||||
# for i, boss_sequence in enumerate(result):
|
||||
# print(f"Boss {i+1} (血量{B[i]}): {boss_sequence}")
|
||||
|
||||
# # 显示详细的技能使用说明
|
||||
# skill_details = []
|
||||
# total_damage = 0
|
||||
# for action in boss_sequence:
|
||||
# if action == -1:
|
||||
# skill_details.append("等待")
|
||||
# else:
|
||||
# damage, cooldown = PlayerSkills[action]
|
||||
# total_damage += damage
|
||||
# skill_details.append(f"技能{action}(伤害{damage},冷却{cooldown})")
|
||||
|
||||
# print(f" 详细: {' -> '.join(skill_details)}")
|
||||
# print(f" 总伤害: {total_damage}, Boss血量: {B[i]}")
|
||||
# print()
|
||||
# else:
|
||||
# print("无解 - 无法击败所有Boss")
|
||||
|
44
test_boss_cases.py
Normal file
@ -0,0 +1,44 @@
|
||||
import os
|
||||
import json
|
||||
import glob
|
||||
from boss_fight import boss_fight as boss_fight_main
|
||||
|
||||
def run_boss_case_tests():
|
||||
case_dir = 'BOSS战样例'
|
||||
json_files = glob.glob(os.path.join(case_dir, '*.json'))
|
||||
all_passed = True
|
||||
for file in json_files:
|
||||
with open(file, 'r', encoding='utf-8') as f:
|
||||
data = json.load(f)
|
||||
b = data.get('B')
|
||||
playerskills = data.get('PlayerSkills')
|
||||
min_turns = data.get('min_turns')
|
||||
if b is None or playerskills is None or min_turns is None:
|
||||
print(f"[FAIL] {file}: 缺少必要字段")
|
||||
all_passed = False
|
||||
continue
|
||||
# 假设boss_fight.py的main返回技能使用次数
|
||||
try:
|
||||
print(b,playerskills)
|
||||
result = boss_fight_main(b, playerskills)
|
||||
except Exception as e:
|
||||
print(f"[FAIL] {file}: boss_fight_main运行出错: {e}")
|
||||
all_passed = False
|
||||
continue
|
||||
# result应为技能数量
|
||||
ans = 0
|
||||
for i in result:
|
||||
ans += len(i)
|
||||
|
||||
if ans == min_turns:
|
||||
print(f"[PASS] {file}: 技能数量={ans}, min_turns={min_turns}")
|
||||
else:
|
||||
print(f"[FAIL] {file}: 技能数量={ans}, min_turns={min_turns}")
|
||||
all_passed = False
|
||||
if all_passed:
|
||||
print("所有样例通过!")
|
||||
else:
|
||||
print("部分样例未通过。")
|
||||
|
||||
if __name__ == '__main__':
|
||||
run_boss_case_tests()
|