-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathexample.py
67 lines (50 loc) · 1.79 KB
/
example.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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
from oxo_tourney import constants
from oxo_tourney.player import AiPlayer, BlockingPlayer, BraveBraveSirRobinPlayer, HAL9000, RandomPlayer, RestfulPlayer, RobertPlayer
from oxo_tourney.tourney import Tourney
def main():
player_list = [
AiPlayer("AiPlayer"),
BlockingPlayer("Blocking"),
BraveBraveSirRobinPlayer("Robin"),
HAL9000("HAL9000"),
RandomPlayer("Random"),
RestfulPlayer("Restful"),
RobertPlayer("Robert"),
]
tourney = Tourney(player_list)
tourney.start()
show_summary(player_list)
show_matrix(tourney.score_matrix, player_list)
def show_summary(player_list):
print("Results summary per player")
print(f"{'Player':12}{'Wins':8}{'Losses':8}{'Draws':8}")
for player in player_list:
summary_line = get_summary_line(player)
print(summary_line)
print()
def get_summary_line(player):
return (
f"{player.name:12}"
+ f"{str(player.score_summary[constants.SCORE_WINS]):8}"
+ f"{str(player.score_summary[constants.SCORE_LOSSES]):8}"
+ f"{str(player.score_summary[constants.SCORE_DRAWS]):8}"
)
def show_matrix(matrix, player_list):
print("Results matrix")
show_opponents(player_list)
show_player_results(matrix, player_list)
def show_opponents(player_list):
opponents = f"{'':12}"
for player in player_list:
opponents += f"{player.name:12} "
print(opponents)
def show_player_results(matrix, player_list):
for player1 in player_list:
result_line = f"{player1.name:12}"
for player2 in player_list:
values = matrix[player1.id][player2.id]
scores = ",".join([str(i) for i in values])
result_line += f"{scores:12} "
print(result_line)
if __name__ == "__main__":
main()