# Tic Tac Toe notes ## Checkpoint 1 Notes Which class is responsible for each of the following behaviors? For each, explain how the behavior is accomplished. ### Checking to see whether the game is over The game inspects the board for winning patterns (three identical non-empty marks in any row, column, or diagonal). It also checks whether there are any empty squares left — if there are none and there is no winner the result is a draw. ### Determining which actions are available at a particular state The function scans the board representation and returns the indices or coordinate pairs for empty cells. If the state is terminal it returns an empty list. ### Showing the board The view module provides formatting and printing utilities that convert the internal state into a nice 3x3 grid ### Choosing which action to play on a turn Scans the board for who went last; giving the next placement opportunity to the person who went before the move that was just played ## Checkpoint 2 Notes ### TTT Strategy For each of the following board states, if you are playing as X and it's your turn, which action would you take? Why? | O | O | | O | X | X | O | ---+---+--- ---+---+--- ---+---+--- ---+---+--- X | X | | X | X | O | O | | ---+---+--- ---+---+--- ---+---+--- ---+---+--- | | | | O | | | | 1) Place X at the middle right to win 2) Place the X in the middle right again to block my opponent from winning 3) Place X at the top left of the board to gain an opportunity to win on the next turn 4) Place X in the middle for possible opportunities in the future and to block the opponents O in the top middle from being of any use. ### Initial game state You can get the initial game state using `game.get_initial_state()`. Current reward is 0 so neither player has an advantage at the start.