Download tests/test_mapper.py from clarenceleo/HonorNet_v1: direct link, hf CLI and curl.
- Browser
- Download file 5.15 kB
-
https://huggingface.co/clarenceleo/HonorNet_v1/resolve/main/tests/test_mapper.py
- Command line
-
hf download hf://clarenceleo/HonorNet_v1/tests/test_mapper.py
-
curl -L -o test_mapper.py https://huggingface.co/clarenceleo/HonorNet_v1/resolve/main/tests/test_mapper.py
5.15 kB
| # test_mapper.py | |
| from inference.game_controller import GameController | |
| from inference.action_mapper import ActionMapper | |
| import time | |
| import os | |
| def test_all_actions(): | |
| """测试所有动作映射""" | |
| ctrl = GameController() | |
| mapper = ActionMapper(ctrl) | |
| print("=" * 50) | |
| print("王者荣耀AI控制测试 - 全面测试") | |
| print("=" * 50) | |
| # 1. 测试移动(8个方向) | |
| print("\n[1/4] 测试移动控制...") | |
| moves = [ | |
| "move_up", "move_down", "move_left", "move_right", | |
| "move_upleft", "move_upright", "move_downleft", "move_downright" | |
| ] | |
| for move in moves: | |
| print(f" 执行: {move}") | |
| mapper.execute(move) | |
| time.sleep(0.5) # 每个动作间隔0.5秒 | |
| # 2. 测试战斗技能 | |
| print("\n[2/4] 测试战斗技能...") | |
| combat_actions = ["attack", "skill_damage", "skill_control"] | |
| for action in combat_actions: | |
| print(f" 执行: {action}") | |
| mapper.execute(action) | |
| time.sleep(0.8) | |
| # 3. 测试战术动作 | |
| print("\n[3/4] 测试战术动作...") | |
| tactical_actions = ["recall", "heal", "summoner", "enhance", "upgrade"] | |
| for action in tactical_actions: | |
| print(f" 执行: {action}") | |
| mapper.execute(action) | |
| time.sleep(0.8) | |
| # 4. 测试截图功能 | |
| print("\n[4/4] 测试截图功能...") | |
| try: | |
| img = ctrl.screenshot() | |
| timestamp = time.strftime("%Y%m%d_%H%M%S") | |
| filename = f"screenshot_{timestamp}.png" | |
| img.save(filename) | |
| print(f" 截图已保存: {filename}") | |
| # 获取屏幕尺寸 | |
| w, h = ctrl.get_screen_size() | |
| print(f" 屏幕尺寸: {w}x{h}") | |
| # 显示截图信息 | |
| print(f" 图片尺寸: {img.size}") | |
| print(f" 图片模式: {img.mode}") | |
| except Exception as e: | |
| print(f" 截图失败: {e}") | |
| print("\n" + "=" * 50) | |
| print("测试完成!") | |
| print("=" * 50) | |
| def test_single_action(): | |
| """交互式测试单个动作""" | |
| ctrl = GameController() | |
| mapper = ActionMapper(ctrl) | |
| print("\n=== 交互式测试模式 ===") | |
| print("可用动作:") | |
| print(" 移动: up, down, left, right, upleft, upright, downleft, downright") | |
| print(" 战斗: attack, damage, control") | |
| print(" 战术: recall, heal, summoner, enhance, upgrade") | |
| print(" 其他: screenshot, quit") | |
| print("-" * 40) | |
| while True: | |
| cmd = input("\n请输入动作: ").strip().lower() | |
| if cmd == 'quit': | |
| print("退出测试") | |
| break | |
| elif cmd == 'screenshot': | |
| try: | |
| img = ctrl.screenshot() | |
| filename = "manual_screenshot.png" | |
| img.save(filename) | |
| print(f"截图已保存: {filename}") | |
| except Exception as e: | |
| print(f"截图失败: {e}") | |
| elif cmd in ['up', 'down', 'left', 'right', 'upleft', 'upright', 'downleft', 'downright']: | |
| action = f"move_{cmd}" | |
| print(f"执行: {action}") | |
| mapper.execute(action) | |
| elif cmd in ['attack', 'damage', 'control']: | |
| if cmd == 'damage': | |
| action = 'skill_damage' | |
| elif cmd == 'control': | |
| action = 'skill_control' | |
| else: | |
| action = cmd | |
| print(f"执行: {action}") | |
| mapper.execute(action) | |
| elif cmd in ['recall', 'heal', 'summoner', 'enhance', 'upgrade']: | |
| print(f"执行: {cmd}") | |
| mapper.execute(cmd) | |
| else: | |
| print(f"未知动作: {cmd}") | |
| time.sleep(0.3) | |
| def test_with_delay(): | |
| """带延迟的循环测试(用于观察)""" | |
| ctrl = GameController() | |
| mapper = ActionMapper(ctrl) | |
| print("\n=== 自动循环测试模式 ===") | |
| print("将依次执行所有动作,每个动作间隔1秒") | |
| print("按 Ctrl+C 停止\n") | |
| actions = [ | |
| # 移动 | |
| "move_up", "move_down", "move_left", "move_right", | |
| "move_upleft", "move_upright", "move_downleft", "move_downright", | |
| # 战斗 | |
| "attack", "skill_damage", "skill_control", | |
| # 战术 | |
| "recall", "heal", "summoner", "enhance", "upgrade" | |
| ] | |
| try: | |
| for i, action in enumerate(actions, 1): | |
| print(f"[{i}/{len(actions)}] {action}") | |
| mapper.execute(action) | |
| time.sleep(1) # 每个动作间隔1秒 | |
| print("\n循环测试完成") | |
| except KeyboardInterrupt: | |
| print("\n用户中断测试") | |
| if __name__ == "__main__": | |
| print("选择测试模式:") | |
| print("1. 全面测试(一次执行所有动作)") | |
| print("2. 交互式测试(手动输入动作)") | |
| print("3. 循环测试(自动循环,可观察)") | |
| choice = input("\n请选择 (1/2/3): ").strip() | |
| if choice == '1': | |
| test_all_actions() | |
| elif choice == '2': | |
| test_single_action() | |
| elif choice == '3': | |
| test_with_delay() | |
| else: | |
| print("无效选择,运行全面测试") | |
| test_all_actions() |