Example #1
0
class GameController:
    def __init__(self):
        self.gameModel = GameModel(0)
        self.aiPlayer = AIPlayer(Figures.circle, self.gameModel)
        self.play = Board(self.canvasClickCallback, self.startNewGame,
                          self.aiPlayer.setDifficultyToEasy,
                          self.aiPlayer.setDifficultyToHard,
                          self.gameModel.playFieldWidth,
                          self.gameModel.playfieldHeight)
        self.aiTurn = False

    def startNewGame(self):
        startPlayer = randint(0, 1)
        self.gameModel.resetGame(startPlayer)
        self.play.resetBoard()
        self.aiTurn = startPlayer
        self.executeAITurn()

    def executeAITurn(self):
        if self.gameModel.checkIfGameOver() or not self.aiTurn:
            return False

        self.aiPlayer.executeTurn()
        self.play.drawSigns(self.gameModel.currentField,
                            self.gameModel.currentPlayer)

        self.gameModel.checkIfCurrentPlayerWon()
        self.gameModel.changeCurrentPlayer()
        self.aiTurn = False

    def canvasClickCallback(self, event):
        if self.aiTurn or self.gameModel.checkIfGameOver():
            return False

        x = event.x
        y = event.y
        field = [x, y]

        if self.gameModel.executePlayerTurn(field[0], field[1]):
            self.play.drawSigns(self.gameModel.currentField,
                                self.gameModel.currentPlayer)
            self.gameModel.checkIfCurrentPlayerWon()
            self.gameModel.changeCurrentPlayer()
            self.aiTurn = True
            self.executeAITurn()

        return True