1
1
# -*- coding: utf-8 -*-
2
2
import logging
3
+ from time import sleep
4
+
5
+ from terminaltables import AsciiTable
6
+ from tqdm import trange
3
7
4
8
from game .game_manager import GameManager
5
9
from mahjong .client import Client
6
10
11
+ TOTAL_HANCHANS = 3
7
12
8
13
def main ():
9
14
# enable it for manual testing
@@ -13,14 +18,71 @@ def main():
13
18
clients = [Client () for _ in range (0 , 4 )]
14
19
manager = GameManager (clients )
15
20
16
- for x in range (1 , 3 ):
17
- print ('Hanchan #{0}' .format (x ))
18
- manager .play_game ()
19
- players = manager .players_sorted_by_scores ()
20
- for player in players :
21
- print (player )
21
+ total_results = {}
22
+ x = 1
23
+ for client in clients :
24
+ total_results [client .id ] = {
25
+ 'name' : client .player .name ,
26
+ 'version' : client .player .ai .version ,
27
+ 'positions' : [1 , x ],
28
+ 'played_rounds' : 0
29
+ }
30
+ x += 1
31
+
32
+ for x in trange (TOTAL_HANCHANS ):
33
+ # yes, I know about tqdm.write
34
+ # but it didn't work properly for our case
35
+ print ('\n ' )
36
+ print ('Hanchan #{0}' .format (x + 1 ))
37
+
38
+ result = manager .play_game ()
39
+ sleep (2 )
40
+
41
+ table_data = [
42
+ ['Position' , 'Player' , 'AI' , 'Scores' ],
43
+ ]
44
+
45
+ clients = sorted (clients , key = lambda i : i .player .scores , reverse = True )
46
+ for client in clients :
47
+ player = client .player
48
+ table_data .append ([player .position ,
49
+ player .name ,
50
+ 'v{0}' .format (player .ai .version ),
51
+ int (player .scores )])
52
+
53
+ total_result_client = total_results [client .id ]
54
+ total_result_client ['positions' ].append (player .position )
55
+ total_result_client ['played_rounds' ] = result ['played_rounds' ]
56
+
57
+ table = AsciiTable (table_data )
58
+ print (table .table )
22
59
print ('' )
23
60
61
+ print ('\n ' )
62
+
63
+ table_data = [
64
+ ['Player' , 'AI' , 'Played rounds' , 'Average place' ],
65
+ ]
66
+
67
+ # recalculate stat values
68
+ for item in total_results .values ():
69
+ played_rounds = item ['played_rounds' ]
70
+ item ['average_place' ] = sum (item ['positions' ]) / len (item ['positions' ])
71
+
72
+ calculated_clients = sorted (total_results .values (), key = lambda i : i ['average_place' ])
73
+
74
+ for item in calculated_clients :
75
+ table_data .append ([
76
+ item ['name' ],
77
+ item ['version' ],
78
+ item ['played_rounds' ],
79
+ item ['average_place' ]
80
+ ])
81
+
82
+ print ('Final results:' )
83
+ table = AsciiTable (table_data )
84
+ print (table .table )
85
+
24
86
25
87
if __name__ == '__main__' :
26
88
main ()
0 commit comments