gameFunctions.py
Sat Aug 06 2022 23:24:22 GMT+0000 (Coordinated Universal Time)
Saved by @projectpython
import pygame
import sys
class gamefunctions:
def __init__(self, game):
self.screen = game.screen
# default value for the move
self.move = 0
# default turn settings
self.player1Turn = True
self.player2Turn = False
# two images, O and X
self.O = pygame.image.load('tictactoeO.png')
self.X = pygame.image.load('tictactoeX.png')
# get rects of images
self.Orect = self.O.get_rect()
self.Xrect = self.X.get_rect()
# a dictionary to store the positions
# that correlate to moves
self.movePos = {
1:[140,40],
2:[330,40],
3:[510,40],
4:[140,220],
5:[330, 220],
6:[510,220],
7:[140,410],
8:[330,410],
9:[510,410]
}
# a dictionary to store
# the coordinates of moves
self.moveData = {
1:"A1",
2:"A2",
3:"A3",
4:"B1",
5:"B2",
6:"B3",
7:"C1",
8:"C2",
9:"C3"
}
# a list of availableMoves
self.availableMoves = [1,2,3,
4,5,6,
7,8,9]
# a list of moves made
self.player1Moves = []
self.player2Moves = []
# a function that allows
# a player to make a move
def makeMove(self):
self.move = 0
while self.move not in range(1,10):
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_1:
self.move = 1
elif event.key == pygame.K_2:
self.move = 2
elif event.key == pygame.K_3:
self.move = 3
elif event.key == pygame.K_4:
self.move = 4
elif event.key == pygame.K_5:
self.move = 5
elif event.key == pygame.K_6:
self.move = 6
elif event.key == pygame.K_7:
self.move = 7
elif event.key == pygame.K_8:
self.move = 8
elif event.key == pygame.K_9:
self.move = 9
if self.move in self.availableMoves:
self.availableMoves.remove(self.move)
return self.move
else:
self.move = 0
# a function that draws a move to
# the screen
def drawMove(self, move):
if self.player1Turn:
self.Orect.x = self.movePos[move][0]
self.Orect.y = self.movePos[move][1]
self.screen.blit(self.O, self.Orect)
elif self.player2Turn:
self.Xrect.x = self.movePos[move][0]
self.Xrect.y = self.movePos[move][1]
self.screen.blit(self.X, self.Xrect)
def checkWinner(self):
self.resetCount()
player1win = False
player2win = False
for move in self.player1Moves:
player1win = self.moveAnalysis(move)
if "B2" in self.player1Moves:
if "A1" in self.player1Moves and "C3" in self.player1Moves:
player1win = True
elif "A3" in self.player1Moves and "C1" in self.player1Moves:
player1win = True
self.resetCount()
for move in self.player2Moves:
player2win = self.moveAnalysis(move)
if "B2" in self.player2Moves:
if "A1" in self.player2Moves and "B3" in self.player2Moves:
player2win = True
elif "A3" in self.player2Moves and "C1" in self.player2Moves:
player2win = True
return [player1win, player2win]
# a function that analyses moves made
# to check for a horizontal/vertical win
def moveAnalysis(self,move):
moveAlpha = move[0]
moveNum = move[1]
if moveAlpha == "A":
self.A += 1
elif moveAlpha == "B":
self.B += 1
elif moveAlpha == "C":
self.C += 1
if moveNum == "1":
self.One += 1
elif moveNum == "2":
self.Two += 1
elif moveNum == "3":
self.Three += 1
if (self.A == 3 or self.B == 3) or (self.C == 3 or self.One == 3) or (self.Two == 3 or self.Three == 3):
return True
else:
return False
def resetCount(self):
self.A = 0
self.B = 0
self.C = 0
self.One = 0
self.Two = 0
self.Three = 0
# two functions that end
# the turns of players
def endTurnP1(self):
self.player1Turn = False
self.player2Turn = True
def endTurnP2(self):
self.player2Turn = False
self.player1Turn = True



Comments