Введение Ээта реализация игры «Углы» на JavaScript, созданный для образовательных целей.
Геймплей заключается в том, чтобы передвигать свои фишки из одного угла игрового поля в другой (по определенным правилам) быстрее противника.
Эта реализация имеет четыре режима: игра с компьютерными игроками, игра с компьютерным игроком, многопользовательская игра на одном компьютере и многопользовательская игра по сети.
Описание игры
Интерфейс состоит из трех частей: окна сообщений, панели настроек и игрового поля.На игровом поле, помимо самого фона (дива с фоном), есть еще два слоя элементов: слой элементов-фишек и слой элементов-ячеек, которые образуют сетку 8*8 и нужны для взаимодействовать с игровым процессом.
В окне сообщений отображается информация о текущем прогрессе и, когда игра заканчивается, ее результат. Панель настроек позволяет выбирать режимы и опции игры.
В режиме «Игра ИИ против самого себя» компьютер играет сам с собой, используя разработанный мной алгоритм.
Поскольку здесь нет элементов случайности, результат всегда один и тот же.
Создан для демонстрации самой игры и работы алгоритма ИИ.
Режим «Игра против ИИ» позволяет вам играть против компьютера.
Вы можете выбрать цвет фишек.
Стоит помнить, что первыми ходят белые.
«Игра в многопользовательском режиме» — здесь вы можете играть вдвоем на одном компьютере.
Режим «Игра по сети» позволяет играть по сети.
Вы можете создать игру или подключиться к уже созданной.
При запуске новой игры генерируется номер, с помощью которого другой игрок может подключиться, введя идентификатор в поле, которое появляется при нажатии на «Подключиться к игре».
Также стоит отметить, что один ход ограничен 20 минутами.
Геймплей, как было отмечено ранее, заключается в перемещении фишек из одного угла игрового поля в другой.
Фигуры, которые могут сделать ход при наведении на них указателя мыши, отмечены зеленой рамкой.
Активные фишки выделены красной рамкой.
Доступные ходы отмечены синим цветом.
Чтобы снять активный режим с фишки, нужно нажать на нее.
Игра закончится, когда один из игроков займет своими фишками весь противоположный угол.
Описание алгоритма, который используется для расчета ходов одной фишки
Возможные ходы:- Один шаг (по вертикали или горизонтали) на соседнюю свободную клетку;
- Цепочка прыжков.
Один прыжок можно совершить «через» другую фигуру на свободную клетку (по горизонтали или вертикали), но нельзя вернуться назад, то есть «перепрыгнуть» на клетку, оставленную в предыдущем прыжке.
Цепочка заканчивается, когда не остается ячеек для «прыжка».
Игровое поле определяется следующим образом:
Этот алгоритм работает на нем.
Он начинается с вызова функции, которая принимает на вход координаты токена (i, j).
Эта функция также использует глобальный массив (CORNERS.chips, на блок-схеме просто CHIPS), содержащий информацию о положении фишек на игровом поле.
Например, запись типа CORNERS.chips[5][1] = 1 означает, что в позиции i = 5 и j = 1 находится белая фишка.
Если бы значение было -1, это означало бы, что есть черная фишка.
там.
А значение 0 указывает на свободную ячейку в поле.
То есть элементы этого массива имеют следующие значения:
- 1 – в этой позиции стоит белая фишка;
- (-1) – фишка черных здесь;
- 0 – здесь есть свободная ячейка.
Структура этого массива: result[m][k] = x, где m — номер пары координат, k — 0 — координата i или 1 — координата j, x — значение соответствующей координаты.
В процессе используются еще два вспомогательных массива: пройденный и патч.
Они нужны для расчета цепочек прыжков.
В пройденные заносятся координаты рассчитанных ячеек, то есть тех ячеек, которые уже не нужно вводить в массив результатов.
Массив patch содержит координаты ячеек поля, которые необходимо изучить для поиска новых вариантов ходов.
Ну а сам поиск заключается в последовательном обходе направлений возможного хода этой фишки, поиске ячеек поля для «шагов» и «прыжков», а затем проверке всех ячеек для «прыжков» на наличие новых ходов.
.
Блок-схема алгоритма
Заключение
Это был мой проект по изучению JavaScript. Ошибок и недочетов много, но как-то работает. Можно было бы описать алгоритм, которому следует компьютерный игрок, но, может быть, в следующий раз.Код этого приложения доступен в репозитории.
GitHub Теги: #JavaScript #Алгоритмы #JavaScript #Алгоритмы
-
Важность Настройки Слоев
19 Oct, 24 -
Ягода
19 Oct, 24 -
Крутой Патент Apple
19 Oct, 24 -
Вышла Новая Версия Ietester V0.4
19 Oct, 24 -
Cnews Открывает Офис В Санкт-Петербурге
19 Oct, 24