コード例 #1
0
ファイル: alphaBeta.py プロジェクト: nemanja97/9-mens-morris
def alphaBetaPruning(board, depth, isWhite, alpha, beta, isPhase_1):
    finalEval = Evaluation(board)

    if depth != 0:

        if isPhase_1:
            possibleBoards = generate_all_moves(board, isWhite)
        else:
            possibleBoards = generate_all_moves_phase2(board, isWhite)

        for possibleBoard in possibleBoards:
            if isWhite:
                currentEval = alphaBetaPruning(possibleBoard, depth - 1, not isWhite, alpha, beta, isPhase_1)

                if currentEval.evalValue > alpha:
                    alpha = currentEval.evalValue
                    finalEval.board = possibleBoard
            else:
                currentEval = alphaBetaPruning(possibleBoard, depth - 1, not isWhite, alpha, beta, isPhase_1)

                if currentEval.evalValue < beta:
                    beta = currentEval.evalValue
                    finalEval.board = possibleBoard
            if alpha >= beta:
                break

        if isWhite:
            finalEval.evalValue = alpha
        else:
            finalEval.evalValue = beta
    else:
        if isPhase_1:
            finalEval.evalValue = heuristic_phase1(board)
        else:
            finalEval.evalValue = heuristic_phase2(board)
    return finalEval