Шаг 110.
Задачи ComputerScience на Python.
Состязательный поиск. Connect Four. ИИ для Connect Four

    На этом шаге мы реализуем эту игру.

    Удивительно, но функции minimax() и find_best_move(), которые мы разработали для игры в крестики-нолики, можно без изменений использовать в реализации Connect Four. В следующем фрагменте кода добавилась лишь пара изменений по сравнению с кодом ИИ для игры в крестики-нолики. Главное различие заключается в том, что значение max_depth теперь равно 3. Это обеспечивает разумное время, отводимое компьютеру на обдумывание хода. Другими словами, наш ИИ для Connect Four рассматривает (оценивает) позиции не более чем на три хода вперед.

from minimax import find_best_move
from connectfour import C4Board
from board import Move, Board

board: Board = C4Board()


def get_player_move() -> Move:
    player_move: Move = Move(-1)
    while player_move not in board.legal_moves:
        play: int = int (input("Задайте номер столбца (0-6):"))
        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, 3)
        print(f"Компьютер сходил на {computer_move}")
        board = board.move(computer_move)
        print(board)
        if board.is_win:
            print("Компьютер выиграл!")
            break
        elif board.is_draw:
            print("Ничья!")
            break
Архив с файлом можно взять здесь.

    На рисунке 1 приведен протокол одной игры.


Рис.1. Протокол игры в Connect Four


Знаете ли вы, что специалисты по информатике решили игру Connect Four? Решить игру - значит найти наилучший ход в любой позиции. Наилучший первый ход в Connect Four - поместить свою фишку в центральный столбец.

    На следующем шаге мы рассмотрим улучшение минимакса с помощью альфа-бета-отсечения .




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