Инструкция по использованию
-
Откройте внешнюю обработку.
-
Нажмите кнопку "Начать игру".
-
Кликайте по белым квадратам на игровом поле, чтобы поставить крестик.
-
После вашего хода компьютер автоматически поставит свой нолик.
-
Игра продолжается до победы одного из игроков или ничьей. Для начала новой партии нажмите "Начать заново".
Представление игрового поля
Для хранения состояния игры используется двумерный массив ИгровоеПоле (3x3). Каждый элемент массива может содержать "х" и "о" или быть пустым ("").
Визуальная часть реализована через элементы формы типа Картинка с именами Ячейка00, Ячейка01, ..., Ячейка22. При нажатии на картинку определяется соответствующая ячейка в массиве.
Обработка хода игрока
Основная логика находится в процедуре КартинкаНажатие.
-
Проверяется флаг ХодКомпьютера, чтобы игрок не мог ходить во время хода компьютера.
-
Из имени нажатого графического элемента извлекаются индексы строки и колонки.
-
Проверяется, свободна ли ячейка в массиве ИгровоеПоле.
-
Ход игрока фиксируется в массиве и на форме вызовом СделатьХод.
-
Проверяется, не привел ли ход к победе или ничье.
-
Если игра продолжается, управление передается процедуре ХодКомпьютера.
Алгоритм хода компьютера
Процедура ХодКомпьютера реализует стратегию игры компьютера. Действия выполняются по приоритету:
-
Поиск выигрышного хода: Функция НайтиВыйгрышныйХод("о") анализирует все линии (строки, колонки, диагонали). Если в какой-то линии уже стоят два нолика и есть одна свободная ячейка — компьютер делает победный ход.
-
Блокировка игрока: Если выигрышный ход не найден, та же функция НайтиВыйгрышныйХод("х") ищет потенциально выигрышную линию для игрока. Если находит — компьютер ставит нолик в угрожающую ячейку.
-
Захват центра: Центральная ячейка (1,1) является самой выгодной позицией, так как входит в максимальное количество выигрышных комбинаций. Компьютер занимает ее, если она свободна.
-
Случайный ход: Если ни одна из стратегических целей не достигнута, компьютер выбирает случайную свободную ячейку с помощью функции СлучайныйХод.
Проверка победной комбинации и ничьи
Функция ПроверитьОкончаниеИгры последовательно вызывает две проверки:
-
ИграОкончена : Проверяет все возможные линии (3 строки, 3 колонки, 2 диагонали) с помощью универсальной функции ПроверитьЛинию. Если линия состоит из трех одинаковых символов (не пустых), игра считается выигранной. При этом выигрышная линия подсвечивается.
-
Ничья: Проверяет, остались ли на поле свободные ячейки. Если нет и победы не было, объявляется ничья.
Проверено на следующих конфигурациях и релизах:
- Документооборот КОРП, релизы 2.1.36.3
Вступайте в нашу телеграмм-группу Инфостарт