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