generated from mwc/lab_tic_tac_toe
added win conditions to check_winner in game.py
What I changed I added the 8 possible tic-tac-toe win conditions to check_winner and compare the values in the state with the symbol passed to the method Why I changed it It took a WHILE to figure out how to actually read the current state of the game, but once I had that, I was able to figure out how to check it for the symbol being sought. Estimate for remaining time to finish assignment: [1 hour?] I thought it was "how long did it take" now "how long remaining" originally.
This commit is contained in:
parent
c8b6d79b8f
commit
b5ab43b8b8
|
@ -7,9 +7,12 @@ player1 = TTTHumanPlayer("Player 2")
|
||||||
game = TTTGame()
|
game = TTTGame()
|
||||||
view = TTTView(player0, player1)
|
view = TTTView(player0, player1)
|
||||||
|
|
||||||
|
# creates blank board
|
||||||
state = game.get_initial_state()
|
state = game.get_initial_state()
|
||||||
view.greet()
|
view.greet()
|
||||||
|
# gets passed blank board at start
|
||||||
while not game.is_over(state):
|
while not game.is_over(state):
|
||||||
|
# take an action and update board
|
||||||
action = view.get_action(state)
|
action = view.get_action(state)
|
||||||
state = game.get_next_state(state, action)
|
state = game.get_next_state(state, action)
|
||||||
view.conclude(state)
|
view.conclude(state)
|
||||||
|
|
14
ttt/game.py
14
ttt/game.py
|
@ -26,6 +26,7 @@ class TTTGame:
|
||||||
|
|
||||||
def is_over(self, state):
|
def is_over(self, state):
|
||||||
"Checks whether the game is over."
|
"Checks whether the game is over."
|
||||||
|
# FALSE because blank FALSE because no markers FALSE because no markers
|
||||||
return self.board_is_full(state) or self.check_winner(state, 'X') or self.check_winner(state, 'O')
|
return self.board_is_full(state) or self.check_winner(state, 'X') or self.check_winner(state, 'O')
|
||||||
|
|
||||||
def get_reward(self, state):
|
def get_reward(self, state):
|
||||||
|
@ -58,4 +59,17 @@ class TTTGame:
|
||||||
|
|
||||||
def check_winner(self, state, symbol):
|
def check_winner(self, state, symbol):
|
||||||
"Checks whether the player with `symbol` has won the game."
|
"Checks whether the player with `symbol` has won the game."
|
||||||
|
currentState = state["board"]
|
||||||
|
# possible tic tac toes: 012 345 678 036 147 258 048 246
|
||||||
|
for i in range(0,7,3):
|
||||||
|
if currentState[i] == symbol and currentState[i+1] == symbol and currentState[i+2] == symbol:
|
||||||
|
return True
|
||||||
|
for i in range(3):
|
||||||
|
if currentState[i] == symbol and currentState[i+3] == symbol and currentState[i+6] == symbol:
|
||||||
|
return True
|
||||||
|
if currentState[0] == symbol and currentState[4] == symbol and currentState[8] == symbol:
|
||||||
|
return True
|
||||||
|
if currentState[2] == symbol and currentState[4] == symbol and currentState[6] == symbol:
|
||||||
|
return True
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
Loading…
Reference in New Issue