@@ -8,23 +8,27 @@ def __init__(self):
88 def reset (self ):
99 self .game_space = [[None for _ in range (self .game_dim )] for _ in range (self .game_dim )]
1010 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+
1825 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 ])
2328
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 ])
2832
2933 for row in self .game_space :
3034 if None in row :
@@ -52,7 +56,7 @@ def minimax(game_space, maximize):
5256 return 0
5357
5458 if maximize :
55- max_score = - 1
59+ max_score = float ( '-inf' )
5660 for i in range (self .game_dim ):
5761 for j in range (self .game_dim ):
5862 if game_space [i ][j ] == None :
@@ -62,7 +66,7 @@ def minimax(game_space, maximize):
6266 max_score = max (max_score , score )
6367 return max_score
6468 else :
65- max_score = - 1
69+ max_score = float ( '-inf' )
6670 for i in range (self .game_dim ):
6771 for j in range (self .game_dim ):
6872 if game_space [i ][j ] == None :
@@ -72,7 +76,7 @@ def minimax(game_space, maximize):
7276 max_score = min (max_score , score )
7377 return max_score
7478
75- max_score = - 1
79+ max_score = float ( '-inf' )
7680 max_move = (- 1 , - 1 )
7781 for i in range (self .game_dim ):
7882 for j in range (self .game_dim ):
0 commit comments