Лабораторная работа №2
Искусственный интеллект игры «Крестики-Нолики». Блок-схема программы «Крестики-Нолики»
На рисунке 1 Изображена блок-схема игры «Крестики-Нолики». Сначала программа спрашивает игрока, какой буквой он хочет играть: Х или О. После этого, случайным образом выбирается, кто будет ходить первым. В зависимости от того, кто ходит первым, алгоритм разделяется на две ветви.
Рис-1 Блок-схема игры «Крестики-Нолики»
Если первым ходит игрок, то сначала отображается игровое поле и игроку предлагают выбрать клетку, которую он хочет занять. Получив ход игрока, программа проверяет условие его победы. Если оно выполнено, то управление передается блоку с предложением сыграть еще раз. Если игрок не победил, программа проверяет условие паритета (ничья). Если оно выполнено, то управление опять же передается блоку с предложением повторной игры. Если условие паритета не выполнено, то программа передает ход компьютеру.
Ход компьютера выполняется полностью аналогичным образом, с той лишь разницей, что обновлять игровое поле компьютеру не нужно – оно и так в его памяти. И ответный ход выбирается также автоматически, без участия со стороны игрока. После того, как компьютер походил, также проверяются условия его победы и ничьей. Если ни одно из этих условий не выполнено, то ход снова передается игроку.
Так будет продолжаться до тех пор, пока кто-либо не одержит верх. Или не останется свободных клеток для ходов (ничья).
Предпоследний блок спрашивает у игрока, хочет ли он сыграть еще. Если игрок отвечает утвердительно, то управление возвращается к началу программы и вновь спрашивает, какую букву желает использовать игрок. Цикл повторяется. Если же игрок отвечает отрицательно, программа завершается.
Представление игрового поля в виде данных.
Для начала, нам нужно понять, как сохранить данные игрового поля в переменной. На бумаге игровое поле выглядит как сетка 3х3 ячейки, каждая из которых может быть пустой, содержать Х, или содержать О.
В программе «Крестики-Нолики» игровое поле представлено в виде списка строк. Каждая строка будет означать одну из девяти ячеек игрового поля. Чтобы легче запомнить ячейки и привязанные к ним индексы, они расположены точно так же, как цифры на NumPad клавиатуре. Это показано на рисунке ниже.
Рис -2 Соответствие индексов ячеек игрового поля и цифр на NumPad клавиатуры
Строки будут иметь значение ‘Х’ для Х – игрока, ‘O’ для О – игрока и один пробел ‘ ‘ – если ячейка еще не занята.
Если мы сохраним список строк игрового поля в переменной с именем board, то элемент board[7] будет означать верхнюю левую ячейку игрового поля, board[5] будет означать центр игрового поля, а board[4] будет означать левую центральную ячейку поля.
Программа проигнорирует строку с индексом [0] в списке. Игрок должен вводить числа от 1 до 9 включительно.
Do'stlaringiz bilan baham: |