Exemple #1
0
    def minMax(self, board, isPlaying, depth, alpha, beta):
        output = GameData()
        score = board.getScore()

        currentPlayer = 1
        if isPlaying:
            currentPlayer = 2

        if board.isFinished() or depth <= 0:
            output.column = None
            output.score = score
            return output

        for i in range(0, board.columns):
            b = copy.deepcopy(board)
            if b.addChip(currentPlayer, i):
                nextMove = self.minMax(b, not isPlaying, depth - 1, alpha,
                                       beta)
                if isPlaying:
                    if output.column == None or nextMove.score > output.score:
                        output.column = i
                        alpha = output.score = nextMove.score
                else:
                    if output.column == None or nextMove.score < output.score:
                        output.column = i
                        alpha = output.score = nextMove.score
            if (alpha >= beta):
                break

        return output