Шаг 106.
Задачи ComputerScience на Python. Состязательный поиск. Крестики-нолики. Разработка ИИ для игры в крестики-нолики

    На этом шаге мы рассмотрим создание ИИ для игры в крестики-нолики.

    Теперь, когда у нас есть все необходимые ингредиенты, можно легко сделать следующий шаг - разработать полностью искусственного противника, способного пройти всю игру в крестики-нолики. Вместо того чтобы оценивать тестовую позицию, ИИ будет оценивать только позицию, генерируемую на каждом ходе противника. В следующем фрагменте короткого кода ИИ играет в крестики-нолики против оппонента-человека, который делает первый ход.

from minimax import find_best_move
from tictactoe import TTTBoard
from board import Move, Board

board: Board = TTTBoard()


def get_player_move() -> Move:
    player_move: Move = Move(-1)
    while player_move not in board.legal_moves:
        play: int = int(input("Укажите допустимый номер поля (0-8):"))
        player_move = Move(play)
    return player_move


if __name__ == '__main__':
    # главный цикл игры
    while True:
        human_move: Move = get_player_move()
        board = board.move(human_move)
        if board.is_win:
            print("Человек победил!")
            break
        elif board.is_draw:
            print("Ничья!")
            break
        computer_move: Move = find_best_move(board)
        print(f"Компьютер сходил на {computer_move}")
        board = board.move(computer_move)
        print(board)
        if board.is_win:
            print("Компьютер победил!")
            break
        elif board.is_draw:
            print("Ничья!")
            break
Архив с файлом можно взять здесь.

    Поскольку по умолчанию значение max_depth для find_best_move() равно 8, этот ИИ для игры в крестики-нолики всегда будет просматривать ходы до конца игры. (Максимальное количество ходов в крестиках-ноликах равно девяти, а ИИ ходит вторым.) Поэтому ИИ всегда должен играть идеально. Идеальная игра - это игра, в которой оба противника каждый раз выбирают наилучший ход. Результатом идеальной игры в крестики-нолики является ничья. Учитывая это, вы никогда не сможете выиграть у искусственного интеллекта. Если вы будете играть идеально, то сыграете вничью, если сделаете ошибку, то ИИ победит. Попробуйте сами. Вы не должны победить.

    Со следующего шага мы начнем рассматривать игру Connect Four.




Предыдущий шаг Содержание Следующий шаг