-
Notifications
You must be signed in to change notification settings - Fork 0
/
play_game.py
52 lines (38 loc) · 1.33 KB
/
play_game.py
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
51
52
from board import Cell, Result, Board
from tqdm import tqdm, trange
import time
PRINT = False
def play_game(x_player, o_player):
x_player.set_turn(1)
o_player.set_turn(2)
board = Board()
while not board.is_game_over():
player = o_player
if board.whose_turn() == Cell.X:
player = x_player
player.move(board)
if PRINT:
board.print()
if PRINT and board.is_game_over():
print(board.get_game_result().name)
return board
def play_games(total_games, x_player, o_player):
results = {
Result.X_Wins: 0,
Result.O_Wins: 0,
Result.Draw: 0
}
print("%s as X and %s as O" % (x_player.name, o_player.name), flush=True)
print("Playing %d games" % total_games, flush=True)
time.sleep(0.05) # Ensures no collisions between tqdm prints and main prints
for _ in trange(total_games):
end_of_game = (play_game(x_player, o_player))
result = end_of_game.get_game_result()
results[result] += 1
x_wins_percent = results[Result.X_Wins] / total_games * 100
o_wins_percent = results[Result.O_Wins] / total_games * 100
draw_percent = results[Result.Draw] / total_games * 100
print(f"x wins: {x_wins_percent:.2f}%")
print(f"o wins: {o_wins_percent:.2f}%")
print(f"draw : {draw_percent:.2f}%")
print("")