Question: import pygame import numpy as np from GameStatus _ 5 1 2 0 import GameStatus from multiAgents import minimax, negamax import sys , random mode
import pygame
import numpy as np
from GameStatus
import GameStatus from multiAgents
import minimax, negamax
import sys random
mode "playervsai # default mode for playing the game player vs AI class RandomBoardTicTacToe: def initself size :
self.size self.width, self.height size # Define some colors
self.BLACK
self.WHITE
self.GREEN
self.RED
# Grid Size
self.GRIDSIZE
self. OFFSET
self.CIRCLECOLOR
self.CROSSCOLOR
# This sets the WIDTH and HEIGHT of each grid location
self.WIDTH self.sizeselfGRIDSIZE self.OFFSET
self.HEIGHT self.sizeselfGRIDSIZE self.OFFSET
# This sets the margin between each cell
self.MARGIN
# Initialize pygame
pygame.init
self.gamereset
def drawgameself:
# Create a dimensional array using the column and row variables pygame.init
self.screen pygame.display.setmodeselfsize pygame.display.setcaptionTic Tac Toe Random Grid" self.screen.fillselfBLACK
# Draw the grid
YOUR CODE HERE TO DRAW THE GRID OTHER CONTROLS AS PART OF THE GUI
pygame.display.update
def changeturnself:
ifselfgamestate.turnO:
pygame.display.setcaptionTic Tac Toe Os turn"
else:
pygame.display.setcaptionTic Tac Toe Xs turn"
def drawcircleself x y:
YOUR CODE HERE TO DRAW THE CIRCLE FOR THE NOUGHTS PLAYER
def drawcrossself x y:
YOUR CODE HERE TO DRAW THE CROSS FOR THE CROSS PLAYER AT THE CELL THAT IS SELECTED VIA THE GUI
def isgameoverself:
YOUR CODE HERE TO SEE IF THE GAME HAS TERMINATED AFTER MAKING A MOVE. YOU SHOULD USE THE ISTERMINAL FUNCTION FROM GAMESTATUSPY FILE YOU WILL FIRST NEED TO COMPLETE ISTERMINAL FUNCTION YOUR RETURN VALUE SHOULD BE TRUE OR FALSE TO BE USED IN OTHER PARTS OF THE GAME
def moveself move:
self.gamestate self.gamestate.getnewstatemove
def playaiself:
YOUR CODE HERE TO CALL MINIMAX OR NEGAMAX DEPENDEING ON WHICH ALGORITHM SELECTED FROM THE GUI ONCE THE ALGORITHM RETURNS THE BEST MOVE TO BE SELECTED, YOU SHOULD DRAW THE NOUGHT OR CIRCLE DEPENDING ON WHICH SYMBOL YOU SELECTED FOR THE AI PLAYER THE RETURN VALUES FROM YOUR MINIMAXNEGAMAX ALGORITHM SHOULD BE THE SCORE, MOVE WHERE SCORE IS AN INTEGER NUMBER AND MOVE IS AN XY LOCATION RETURNED BY THE AGENT self.changeturn
pygame.display.update
terminal self.gamestate.isterminal
USE self.gamestate.getscoresterminal HERE TO COMPUTE AND DISPLAY THE FINAL SCORES def gameresetself: self.drawgame YOUR CODE HERE TO RESET THE BOARD TO VALUE FOR ALL CELLS AND CREATE A NEW GAME STATE WITH NEWLY INITIALIZED BOARD STATE
pygame.display.update
def playgameself mode "playervsai:
done False
clock pygame.time.Clock
while not done:
for event in pygame.event.get:
# User did something
YOUR CODE HERE TO CHECK IF THE USER CLICKED ON A GRID ITEM. EXIT THE GAME IF THE USER CLICKED EXIT YOUR CODE HERE TO HANDLE THE SITUATION IF THE GAME IS OVER. IF THE GAME IS OVER THEN DISPLAY THE SCORE, THE WINNER, AND POSSIBLY WAIT FOR THE USER TO CLEAR THE BOARD AND START THE GAME AGAIN OR CLICK EXIT YOUR CODE HERE TO NOW CHECK WHAT TO DO IF THE GAME IS NOT OVER AND THE USER SELECTED A NON EMPTY CELL IF CLICKED A NON EMPTY CELL, THEN GET THE XY POSITION, SET ITS VALUE TO SELECTED BY HUMAN PLAYER DRAW CROSS OR NOUGHT DEPENDING ON WHICH SYMBOL YOU CHOSE FOR YOURSELF FROM THE gui AND CALL YOUR PLAYAI FUNCTION TO LET THE AGENT PLAY AGAINST YOU
# if event.type pygame.MOUSEBUTTONUP:
# Get the position
# Change the xy screen coordinates to grid coordinates
# Check if the game is human vs human or human vs AI player from the GUI.
# If it is human vs human then your opponent should have the value of the selected cell set to # Then draw the symbol for your opponent in the selected cell
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
