From 2d470c3c89f8c74028af35726e5b58a83543f9b9 Mon Sep 17 00:00:00 2001 From: Chris Mekelburg Date: Sat, 16 Nov 2024 21:03:08 -0500 Subject: [PATCH] Checkpoint 2 To decide on a winner, the game needs to check each of the winning combinations on the board for either x symbols or o symbols and then return the correct winner. To do this, I utilized 2 functions, a check_winning_combo, which checked each index in each combination to see if an x or o symbol was present, and then a check_winner which sent each possible winning combination through check_winning combo. If the combo did not have all x's or all o's (a mix of x's and o's and/or blanks) the check_winning combo returned false otherwise it returned true. --- notes.md | 1 + ttt/game.py | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/notes.md b/notes.md index 02f68b3..d60fba1 100644 --- a/notes.md +++ b/notes.md @@ -30,6 +30,7 @@ and it's your turn, which action would you take? Why? ---+---+--- ---+---+--- ---+---+--- ---+---+--- | | | | O | | | | + ### Initial game state You can get the inital game state using game.get_initial_state(). diff --git a/ttt/game.py b/ttt/game.py index 2f0e302..f99f3c1 100644 --- a/ttt/game.py +++ b/ttt/game.py @@ -58,4 +58,25 @@ class TTTGame: def check_winner(self, state, symbol): "Checks whether the player with `symbol` has won the game." + combos = [ + [0, 1 ,2], + [3, 4, 5], + [6, 7, 8], + [0, 3, 6], + [1, 4 ,7], + [2, 5 ,8], + [0, 4 ,8], + [2, 4 ,6] + ] + for combo in combos: + if self.check_winning_combo(state,symbol,combo): + return True return False + + def check_winning_combo(self, state, symbol, combo): + """Checks whether all three spaces in a combo eg[1,2,3] are + filled with a symbol""" + for index in combo: + if state["board"][index] != symbol: + return False + return True \ No newline at end of file