Spaces:
Sleeping
Sleeping
| import engine_rust | |
| # Load DB | |
| with open("data/cards_compiled.json", "r", encoding="utf-8") as f: | |
| db_content = f.read() | |
| db = engine_rust.PyCardDatabase(db_content) | |
| # Fixed Starter Decks (SD1) | |
| p0_deck = [124, 127, 130, 132] * 5 | |
| p1_deck = [124, 127, 130, 132] * 5 | |
| # Lives (SD1) | |
| p_lives = [1024, 1025, 1027] | |
| p_energy = [0] * 10 | |
| game = engine_rust.PyGameState(db) | |
| game.initialize_game(p0_deck, p1_deck, p_energy, p_energy, p_lives, p_lives) | |
| print(f"Initial Phase: {game.phase}") | |
| last_p = -1 | |
| last_cp = -1 | |
| last_turn = -1 | |
| step = 0 | |
| while not game.is_terminal() and step < 1500: | |
| cp = game.current_player | |
| phase = game.phase | |
| turn = game.turn | |
| is_interactive = phase in [-1, 0, 4, 5] | |
| if phase != last_p or cp != last_cp or turn != last_turn: | |
| print(f"Step {step}: Turn {turn}, Player {cp}, Phase {phase}, Interactive={is_interactive}") | |
| last_p = phase | |
| last_cp = cp | |
| last_turn = turn | |
| if is_interactive: | |
| suggestions = game.get_mcts_suggestions(50, engine_rust.SearchHorizon.TurnEnd) # 50 sims | |
| best_action = suggestions[0][0] | |
| # print(f" Action: {best_action}") | |
| game.step(best_action) | |
| else: | |
| game.step(0) | |
| step += 1 | |
| print(f"Final Step {step}: Phase {game.phase}, Terminal={game.is_terminal()}") | |
| if game.is_terminal(): | |
| print(f"Winner: {game.get_winner()}") | |