Найти в Дзене

Coding Game. Mad Pod Racing. Игра для программистов.

Оглавление
Геймплей игры
Геймплей игры

Coding Game

Coding Game — это онлайн-платформа, которая помогает изучать программирование. В ней вы будете решать различные задачи и головоломки и игры, используя разные языки программирования. Игра доступна бесплатно и подходит для начинающих программистов.

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

В данной статье мы рассмотрим одну интересную игру с платформы Coding Game.

Mad Pod Racing

Mad Pod Racing - это многопользовательская игра (соревнование) для программистов.

Чему вы научитесь?
Ваша задача запрограммировать бота для победы в гонке на космическом корабле.

Цель игры, конечно же, выиграть гонку у других игроков! Чтобы успешно справиться с этой задачей, вы сможете использовать различные математические концепции, такие как расчет траектории, столкновений, вектора скорости или инерции.

Начать игру очень просто.

Правила просты для понимания.

Для перемещения вашего корабля требуется всего несколько строк кода.

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

Для решения поставленной задачи вы можете использовать такие разделы математики и компьютерных наук как:

  • Методы оптимизации
  • Нейронные сети
  • Расстояния (векторная алгебра)
  • Тригонометрия
  • Теория оптимального управления

Условие задачи

Эта задача разделена на две отдельные части:

  1. От Деревянной до Серебряной лиги: учебное пособие, содержащее несколько миссий для новичков в многопользовательском режиме с простой целью: ваша программа должна выиграть гонку. В каждой лиге вы будете открывать новые правила.
  2. Начиная с Золотой лиги и выше: вам будет предоставлено большое количество параметров для управления (список ключевых точек, вектор скорости и т.д.), чтобы улучшить свой искусственный интеллект.

Правила

Трасса гонки состоит из контрольных точек. Чтобы пройти один круг, ваш автомобиль (pod) должен проехать все контрольные точки по порядку и вернуться на старт. Побеждает игрок, который первым достигнет конечной контрольной точки на последнем круге.

Контрольные точки работают следующим образом:

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

Контрольные точки имеют круглую форму с радиусом 600 единиц.

Расположение контрольных точек выбирается случайным образом для каждой гонки.

Если ваш космический корабль не достигнет своей следующей контрольной точки менее чем за 100 ходов, вы выбываете и проигрываете игру.

Космические корабли могут перемещаться за пределы игровой зоны в обычном режиме.

Перемещение корабля:

Чтобы переместить космический корабль, необходимо вывести в консоль (стандартный поток вывода) целевую точку назначения (направление движения).

Так же нужно вывести целое число thrust (0, ..., 100) - величину тяги. Технические подробности можно найти ниже.

Значение тяги космического корабля определяется ее ускорением и должно быть в диапазоне от 0 до 100.

В каждой гонке вы можете использовать один раз турбо-ускорение. Вам нужно только заменить значение тяги ключевым словом BOOST.

Космический корабль имеют круговое силовое поле вокруг своего центра радиусом 400 единиц, которое активируется в случае столкновения с другими космическими кораблями.

Игра ведется на карте шириной 16000 единиц и высотой 9000 единиц. Координаты X=0, Y=0 - это верхний левый пиксель.

Программа должна в рамках бесконечного цикла считывать контекстные данные из стандартного ввода и выдавать на стандартный вывод требуемые инструкции.

Ввод данных для игры

Ввод для одного игрового хода

Первая строка:

6 целых чисел

  • x и y для местоположения вашего корабля.
  • nextCheckpointX и nextCheckpointY - координаты следующей контрольной точки, которую должен пройти космический корабль.
  • nextCheckpointDist - вычисленное расстояние между вашим кораблём и следующей контрольной точкой,
  • nextCheckpointAngle - угол в градусах между направлением вашего корабля и направлением следующей контрольной точки (от -180 до 180 градусов).

Вторая строка:

  • 2 целых числа opponentX и opponentY - местоположение корабля противника.

Вывод - выходные данные (для одного игрового хода)

Одна строка:

2 целых числа для координат цели (направления) вашего корабля

величина тяги (аналог модуля ускорения), которую нужно придать вашему кораблю. Вы можете заменить значение тяги на слово BOOST (но это не всегда оптимально).

Ограничения

0 ≤ величина тяги ≤ 100

Время отклика на первый тик ≤ 1000 мс

Время отклика на каждый тик ≤ 75 мс

На официальном сайте можно посмотреть демо-видео и принять участие в соревновании.