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