@@ -8,23 +8,27 @@ def __init__(self):
8
8
def reset (self ):
9
9
self .game_space = [[None for _ in range (self .game_dim )] for _ in range (self .game_dim )]
10
10
self .player_turn = 0
11
-
12
- # turn this into calc_score function coz in 'NycharanXOGame' winner gets the more score than other player
13
-
14
- def calc_score (self ):
15
- pass
16
-
17
- def check_xo (self ):
11
+
12
+ def fetch_game (self ):
13
+ def calc_score (line ):
14
+ for i in range (len (line ) - 1 ):
15
+ score = 0
16
+ counter = 0
17
+
18
+ if line [i ] == line [i + 1 ] == self .player_turn :
19
+ counter += 1
20
+ else :
21
+ if counter > 2 :
22
+ score += (counter - 2 ) + (counter - 3 )
23
+ return score
24
+
18
25
for i in range (self .game_dim ):
19
- if all (self .game_space [i ][j ] == self .game_space [i ][0 ] for j in range (1 ,self .game_dim )) and self .game_space [i ][0 ] != None :
20
- return self .game_space [i ][0 ]
21
- if all (self .game_space [j ][i ] == self .game_space [0 ][i ] for j in range (1 ,self .game_dim )) and self .game_space [0 ][i ] != None :
22
- return self .game_space [0 ][i ]
26
+ calc_score (self .game_space [i ])
27
+ calc_score ([j [i ] for j in self .game_space ])
23
28
24
- if all (self .game_space [j ][j ] == self .game_space [0 ][0 ] for j in range (1 ,self .game_dim )) and self .game_space [0 ][0 ] != None :
25
- return self .game_space [0 ][0 ]
26
- if all (self .game_space [j ][i ] if i + j == (self .game_dim - 1 ) else - 1 == self .game_space [0 ][(self .game_dim - 1 )] for j in range (1 ,self .game_dim )) and self .game_space [0 ][(self .game_dim - 1 )] != None :
27
- return self .game_space [0 ][(self .game_dim - 1 )]
29
+ for k in range (2 * self .game_dim - 1 ):
30
+ calc_score ([self .game_space [i ][j ] for i in range (self .game_dim ) if 0 <= (j := k - i ) < self .game_dim ])
31
+ calc_score ([self .game_space [i ][j ] for i in range (self .game_dim ) if 0 <= (j := i + k - self .game_dim + 1 ) < self .game_dim ])
28
32
29
33
for row in self .game_space :
30
34
if None in row :
@@ -52,7 +56,7 @@ def minimax(game_space, maximize):
52
56
return 0
53
57
54
58
if maximize :
55
- max_score = - 1
59
+ max_score = float ( '-inf' )
56
60
for i in range (self .game_dim ):
57
61
for j in range (self .game_dim ):
58
62
if game_space [i ][j ] == None :
@@ -62,7 +66,7 @@ def minimax(game_space, maximize):
62
66
max_score = max (max_score , score )
63
67
return max_score
64
68
else :
65
- max_score = - 1
69
+ max_score = float ( '-inf' )
66
70
for i in range (self .game_dim ):
67
71
for j in range (self .game_dim ):
68
72
if game_space [i ][j ] == None :
@@ -72,7 +76,7 @@ def minimax(game_space, maximize):
72
76
max_score = min (max_score , score )
73
77
return max_score
74
78
75
- max_score = - 1
79
+ max_score = float ( '-inf' )
76
80
max_move = (- 1 , - 1 )
77
81
for i in range (self .game_dim ):
78
82
for j in range (self .game_dim ):
0 commit comments