Играет 2 игрока — один за "белых", второй за "черных". В начале партии на шахмтной доске 8x8 в первом ряду располагается 8 белых фишек, в восьмом ряду — 8 черных фишек Каждый из игроков, начиная с игрока за "белых", по очереди проделывает следующие действия в указанной последовательности:
- Выбирает фишку, которой будет ходить
- Указывает направление, в котором полетит фишка
- Указывает силу, с которой будет брошена фишка
После этого выбранная фишка бросается в указанном направлении с указанной силой. Она соударется с другими фишками и может выкинуть их за пределы игрового поля. Когда все фишки остановились, ход переходит следующему игроку
Игра продолжается до тех пор, пока все фишки хотя бы одного из игроков не окажутся выбитыми за пределы игрового поля. Победителем считается игрок, сделавший последний ход.
Следует заметить, что ничья в игре невозможна.
По итогам одной игры игрокам начисляется следующее количество очков:
0 — за поражение
n + 1 — за победу, где n — количество фишек цвета победителя, оставшихся на поле
Предлагается также и такая формула для начисления очков
Здесь
Если применять такую формулу для подсчета очков, то больший счет будет у игрока, который сбил больше фишек соперника в начале игры. Очки теряются за сбитые фишки своего цвета. Не учитывается, кто из игроков одержал победу
Вероятно, бота и режим одиночной игры не следует реализовывать сразу
Предлагается следующий алгоритм, по которому ходит соперник в одиночном режиме (предполагается, что бот играет за "белых", для "черных" алгоритм аналогичный):
- Определяются одна белая и одна черная фишка, так что между ними минимально возможное расстояние
- Проводится луч
$l$ от выбранной белой фишки в направлении выбранной чёрной фишки и луч$l_0$ от выбранной белой фишки вертикально вверх- Пусть
$\phi$ — тот из двух углов , составляемых$l$ с$l_0$ , который проведен по часовой стрелке от$l_0$ - Пусть
$\theta$ — угловой размер выбранной белой фишки
- Пусть
- Определяется направление броска фишки
- Пусть фишка будет брошена в направлении луча
$l'$ , тогда угол между$l_0$ и$l'$ (проведенный по часовой стрелке от$l_0$ ) должен лежать в отрезке$[\phi - \frac{\theta}{2};\phi + \frac{\theta}{2}]$ — величина угла определяется случайно
- Пусть фишка будет брошена в направлении луча
- Определяется сила броска
- Величина силы должна составлять от 75% до 100% от максимально возможной. Значение определяется случайно
Случайные величины углов и силы броска выбираются для того, чтобы действия бота было сложнее предсказать. Если предложенный алгоритм определения угла броска окажется слишком трудным в реализации, то предлагается определять его однозначно как φ (то есть фишка бросается по направлению к центру выбранной фишки соперника). Для усложнения алгоритма хода бота можно на 1-м шаге выбирать по две белые и черные фишки
- Игрок:
-
- Возможность выбрать активную фишку своего цвета
-
- Возможность поменять активную фишку на другую фишку своего цвета
-
- Возможность выбрать направление броска фишки
-
- Возможность выбрать силу броска фишки
-
- Возможность сыгрыть с другим игроком
-
- Возможность сыграть с ботом
- Игра:
-
- Анимация полета нескольких фишек
-
- Пересчет скорости фишек с учетом трения
-
- Пересчет направления и модуля скорости фишек после соударения
-
- Удаление с игрового поля фишек, вылетевших за пределы поля
-
- Подсчет числа ходов