Skip to content

Latest commit

 

History

History
73 lines (53 loc) · 6.85 KB

README.md

File metadata and controls

73 lines (53 loc) · 6.85 KB

Описание механик и логики игры "Шашки Чапаева"

Содержание

Игровой процесс

Играет 2 игрока — один за "белых", второй за "черных". В начале партии на шахмтной доске 8x8 в первом ряду располагается 8 белых фишек, в восьмом ряду — 8 черных фишек Каждый из игроков, начиная с игрока за "белых", по очереди проделывает следующие действия в указанной последовательности:

  1. Выбирает фишку, которой будет ходить
  2. Указывает направление, в котором полетит фишка
  3. Указывает силу, с которой будет брошена фишка

После этого выбранная фишка бросается в указанном направлении с указанной силой. Она соударется с другими фишками и может выкинуть их за пределы игрового поля. Когда все фишки остановились, ход переходит следующему игроку

Игра продолжается до тех пор, пока все фишки хотя бы одного из игроков не окажутся выбитыми за пределы игрового поля. Победителем считается игрок, сделавший последний ход.

Следует заметить, что ничья в игре невозможна.

Начисление очков

По итогам одной игры игрокам начисляется следующее количество очков:

0 — за поражение

n + 1 — за победу, где n — количество фишек цвета победителя, оставшихся на поле

Предлагается также и такая формула для начисления очков

$\Delta S = (n_{enemy} - n_{own}) * 10 * e^{-t}$

Здесь $\Delta S$ — число начисленных игроку за его ход очков; $n_{enemy}$ — число выбитых за пределы поля фишек соперника; $n_{own}$ — число выбитых за пределы поля собственных фишек; $t$ — номер хода, начиная с 0.

Если применять такую формулу для подсчета очков, то больший счет будет у игрока, который сбил больше фишек соперника в начале игры. Очки теряются за сбитые фишки своего цвета. Не учитывается, кто из игроков одержал победу

Как ходит бот

Вероятно, бота и режим одиночной игры не следует реализовывать сразу

Предлагается следующий алгоритм, по которому ходит соперник в одиночном режиме (предполагается, что бот играет за "белых", для "черных" алгоритм аналогичный):

  1. Определяются одна белая и одна черная фишка, так что между ними минимально возможное расстояние
  2. Проводится луч $l$ от выбранной белой фишки в направлении выбранной чёрной фишки и луч $l_0$ от выбранной белой фишки вертикально вверх
    • Пусть $\phi$ — тот из двух углов , составляемых $l$ с $l_0$, который проведен по часовой стрелке от $l_0$
    • Пусть $\theta$ — угловой размер выбранной белой фишки
  3. Определяется направление броска фишки
    • Пусть фишка будет брошена в направлении луча $l'$, тогда угол между $l_0$ и $l'$ (проведенный по часовой стрелке от $l_0$) должен лежать в отрезке $[\phi - \frac{\theta}{2};\phi + \frac{\theta}{2}]$ — величина угла определяется случайно
  4. Определяется сила броска
    • Величина силы должна составлять от 75% до 100% от максимально возможной. Значение определяется случайно

Демонстрация обозначений

Случайные величины углов и силы броска выбираются для того, чтобы действия бота было сложнее предсказать. Если предложенный алгоритм определения угла броска окажется слишком трудным в реализации, то предлагается определять его однозначно как φ (то есть фишка бросается по направлению к центру выбранной фишки соперника). Для усложнения алгоритма хода бота можно на 1-м шаге выбирать по две белые и черные фишки

Перечисление механик игры

  • Игрок:
    • Возможность выбрать активную фишку своего цвета
    • Возможность поменять активную фишку на другую фишку своего цвета
    • Возможность выбрать направление броска фишки
    • Возможность выбрать силу броска фишки
    • Возможность сыгрыть с другим игроком
    • Возможность сыграть с ботом
  • Игра:
    • Анимация полета нескольких фишек
    • Пересчет скорости фишек с учетом трения
    • Пересчет направления и модуля скорости фишек после соударения
    • Удаление с игрового поля фишек, вылетевших за пределы поля
    • Подсчет числа ходов