неверный вывод из минимаксного алгоритма для Tic Tac Toe - PullRequest
0 голосов
/ 19 апреля 2019

Нет ошибок в выполнении кода, но вывод алгоритма минимакса неверен, пожалуйста, посмотрите, ` функция AI_makemove вызывается из основного цикла, а board_state является копией самой платы. Функция AI_makemove должна возвращать лучший ход компьютера против пользователя, board_state - текущее состояние доски, глубина - количество позиций, заполненных на доске, функция check_if_won возвращает true, если состояние является выигрышным состоянием для текущий игрок.

def AI_makemove(board_state , isAI , depth):

temp_board = copy.deepcopy(board_state)

depth+=1
print(temp_board , depth , isAI)

if isAI:
    bestVal = -9999
    a = b = 0
    for i in range(0,3):
        for j in range(0,3):
            if temp_board[i][j] == 0:
                temp_board1  = copy.deepcopy(temp_board)
                temp_board1[i][j] = 2
                if check_if_won(2,temp_board1):
                    return [1 , i, j]
                if depth == 9:
                    return [bestVal , a ,b]
                l = AI_makemove(temp_board1,False,depth)
                if int(l[0]) > bestVal:
                    bestVal = int(l[0])
                    a = int(l[1])
                    b = int(l[2])

else:
    bestVal = +9999
    a = b = 0
    for i in range(0, 3):
        for j in range(0, 3):
            if temp_board[i][j] == 0:
                temp_board1  = copy.deepcopy(temp_board)
                temp_board1[i][j] = 1
                if check_if_won(1,temp_board1):
                    return [-1 , i, j]
                if depth == 9:
                    return [bestVal , a ,b]
                l = AI_makemove(temp_board1,True,depth)
                if int(l[0]) < bestVal:
                    bestVal = int(l[0])
                    a = int(l[1])
                    b = int(l[2])


return [bestVal , a ,b]

1 Ответ

0 голосов
/ 15 мая 2019

Я пару раз пытался отладить код, но не смог его исправить, поэтому я снова написал код с другим подходом, и он сработал. Здесь код

...