Checkpoint 3

As I worked through this lab and the video, I became more aware of
the thought process that goes into tic-tac-toe. However, it was not
until I saw all the reward possibilities for the initial state of the
board, and then made the computer play itself that I appreciated how
complex the game is and how many possibilities there are on a relatively
simple board. I am also wondering when the computer plays itself,
does the game always end in a tie? I suppose I could write a program for
this that plays the game a set number of times and makes a list of the
outcomes and then counts the wins, losses, and ties for a particular
player.
This commit is contained in:
Chris Mekelburg 2024-11-17 21:37:11 -05:00
parent 2d470c3c89
commit 48dd6717e4
3 changed files with 16 additions and 5 deletions

View File

@ -30,10 +30,21 @@ and it's your turn, which action would you take? Why?
---+---+--- ---+---+--- ---+---+--- ---+---+--- ---+---+--- ---+---+--- ---+---+--- ---+---+---
| | | | O | | | | | | | | O | | | |
View 1- Put x in Space 5, to win the game
View 2- Put x in Space 5, to precent the O's from winning
View 3- Put the x in Space 0, so there are then 2 possible ways to get 3 in a row on your next turn (space 3 or space 6)
View 4- Put the x in space 4, to block o from being able to get 3 in a row down the middle.
### Initial game state ### Initial game state
You can get the inital game state using game.get_initial_state(). You can get the inital game state using game.get_initial_state().
What is the current and future reward for this state? What does this mean? What is the current and future reward for this state? What does this mean?
If state is set to game.get_initial_state(), there is a very large (but nonetheless finite), list of possible game outcomes that get printed out in the terminal. This means that there are many possibilites for either x to win, or o to win, or for the game to end in a tie.
I'm not sure if there is a way to see which reward 0,1,or -1 is more likely. For example is there a way to see if the person who goes first has more paths to winning- I would think so, but it would be nice to know how much more likely!

View File

@ -2,8 +2,8 @@ from ttt.game import TTTGame
from ttt.view import TTTView from ttt.view import TTTView
from ttt.player import TTTHumanPlayer, TTTComputerPlayer from ttt.player import TTTHumanPlayer, TTTComputerPlayer
player0 = TTTHumanPlayer("Player 1") player0 = TTTComputerPlayer("Player 1")
player1 = TTTHumanPlayer("Player 2") player1 = TTTComputerPlayer("Player 2")
game = TTTGame() game = TTTGame()
view = TTTView(player0, player1) view = TTTView(player0, player1)

View File

@ -1,5 +1,5 @@
from click import Choice, prompt from click import Choice, prompt
from strategy.random_strategy import RandomStrategy from strategy.lookahead_strategy import LookaheadStrategy
from ttt.game import TTTGame from ttt.game import TTTGame
import random import random
@ -24,10 +24,10 @@ class TTTComputerPlayer:
def __init__(self, name): def __init__(self, name):
"Sets up the player." "Sets up the player."
self.name = name self.name = name
self.strategy = RandomStrategy(TTTGame()) self.strategy = LookaheadStrategy(TTTGame(),deterministic=False)
def choose_action(self, state): def choose_action(self, state):
"Chooses a random move from the moves available." "Chooses the best move from the moves available."
action = self.strategy.choose_action(state) action = self.strategy.choose_action(state)
print(f"{self.name} chooses {action}.") print(f"{self.name} chooses {action}.")
return action return action