forked from karylab/liars-bar-game
55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
from game import Game
|
|
from typing import Dict, List
|
|
import argparse
|
|
|
|
class MultiGameRunner:
|
|
def __init__(self, player_configs: List[Dict[str, str]], num_games: int = 10):
|
|
"""初始化多局游戏运行器
|
|
|
|
Args:
|
|
player_configs: 玩家配置列表
|
|
num_games: 要运行的游戏局数
|
|
"""
|
|
self.player_configs = player_configs
|
|
self.num_games = num_games
|
|
|
|
def run_games(self) -> None:
|
|
"""运行指定数量的游戏"""
|
|
for game_num in range(1, self.num_games + 1):
|
|
print(f"\n=== 开始第 {game_num}/{self.num_games} 局游戏 ===")
|
|
|
|
# 创建并运行新游戏
|
|
game = Game(self.player_configs)
|
|
game.start_game()
|
|
|
|
print(f"第 {game_num} 局游戏结束")
|
|
|
|
def parse_arguments():
|
|
"""解析命令行参数"""
|
|
parser = argparse.ArgumentParser(
|
|
description='运行多局AI对战游戏',
|
|
formatter_class=argparse.RawTextHelpFormatter
|
|
)
|
|
parser.add_argument(
|
|
'-n', '--num-games',
|
|
type=int,
|
|
default=10,
|
|
help='要运行的游戏局数 (默认: 10)'
|
|
)
|
|
return parser.parse_args()
|
|
|
|
if __name__ == '__main__':
|
|
# 解析命令行参数
|
|
args = parse_arguments()
|
|
|
|
# 配置玩家信息, 其中model为你通过API调用的模型名称
|
|
player_configs = [
|
|
{"name": "DeepSeek", "model": "deepseek-r1"},
|
|
{"name": "ChatGPT", "model": "o3-mini"},
|
|
{"name": "Claude", "model": "claude-3.7-sonnet"},
|
|
{"name": "Gemini", "model": "gemini-2.0-flash-thinking"}
|
|
]
|
|
|
|
# 创建并运行多局游戏
|
|
runner = MultiGameRunner(player_configs, num_games=args.num_games)
|
|
runner.run_games() |