MCPcopy Create free account
hub / github.com/lazyprogrammer/machine_learning_examples / game_over

Method game_over

rl/tic_tac_toe.py:176–221  ·  view source on GitHub ↗
(self, force_recalculate=False)

Source from the content-addressed store, hash-verified

174 return h
175
176 def game_over(self, force_recalculate=False):
177 # returns true if game over (a player has won or it's a draw)
178 # otherwise returns false
179 # also sets 'winner' instance variable and 'ended' instance variable
180 if not force_recalculate and self.ended:
181 return self.ended
182
183 # check rows
184 for i in range(LENGTH):
185 for player in (self.x, self.o):
186 if self.board[i].sum() == player*LENGTH:
187 self.winner = player
188 self.ended = True
189 return True
190
191 # check columns
192 for j in range(LENGTH):
193 for player in (self.x, self.o):
194 if self.board[:,j].sum() == player*LENGTH:
195 self.winner = player
196 self.ended = True
197 return True
198
199 # check diagonals
200 for player in (self.x, self.o):
201 # top-left -> bottom-right diagonal
202 if self.board.trace() == player*LENGTH:
203 self.winner = player
204 self.ended = True
205 return True
206 # top-right -> bottom-left diagonal
207 if np.fliplr(self.board).trace() == player*LENGTH:
208 self.winner = player
209 self.ended = True
210 return True
211
212 # check if draw
213 if np.all((self.board == 0) == False):
214 # winner stays None
215 self.winner = None
216 self.ended = True
217 return True
218
219 # game is not over
220 self.winner = None
221 return False
222
223 def is_draw(self):
224 return self.ended and self.winner is None

Callers 3

rewardMethod · 0.95
play_gameFunction · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected