File size: 1,405 Bytes
463f868
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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()}")