Артиллерия на декартовой плоскости. Оружие — функция y = f(x).
Каждый ход вы пишете функцию. Снаряд летит по её графику от вашего солдата в сторону противника.
Главное: график сдвигается по вертикали так, чтобы пройти через вашего солдата. Значит любая константа в функции бессмысленна: 2*x+3 и 2*x — одно и то же.
Ось x: от −25 до +25, ось y: от −15 до +15. Ваши солдаты всегда на отрицательных x, поэтому sqrt(x) взорвётся сразу — нужно sqrt(abs(x)).
x^2 при x=−15 даёт 225 — это далеко за потолком, график встанет почти вертикально. Делите: (x^2)/50.
Траектория прошивает солдат насквозь — своих тоже. Слишком длинный график (например sin(100*x)) обрывается сам.
Край поля — такая же стена: ушедший за верхнюю границу снаряд взрывается о неё, а не возвращается. Перелететь «над экраном» нельзя.
Приёмы против препятствий. Считайте x по сетке от центральной оси в сторону противника — у обеих команд он растёт к врагу, жирная линия каждые 5. Ниже — реальные траектории, просчитанные тем же кодом, что стреляет в игре.
Гора посреди поля. -x^2/50 — парабола с вершиной в центре: снаряд поднимается на 6–7 клеток к середине и снижается к чужому краю.
cos(x/6)*5 берёт выше — около 10 клеток — и начинает подъём сразу от вашего солдата.
Стена в известной точке. 6/(((x-10)/4)^2+1) — холм высотой 6 с центром в x=10 и полушириной 4, а на остальном пути траектория остаётся прямой. Меняете три числа под конкретную стену: высоту, точку, ширину.
Со знаком минус — -9/(((x-10)/4)^2+1) — тот же горб становится подкопом и обходит препятствие снизу.
Острый гребень. -abs(x-5)/2: ровный подъём до x=5 и такой же спуск. Делитель задаёт крутизну — -abs(x) без него уводит снаряд в потолок.
Узкая щель. x/20 — почти прямая с небольшим наклоном; чем больше делитель, тем ровнее.
Стена вплотную к цели. 50/(28-x) — пологий разгон и резкий набор высоты у самого края поля.
Горб должен быть шире препятствия, иначе снаряд врежется в бок раньше, чем начнёт подниматься: 6/(x^2+1) слишком узкий и разбивается о край круга, хотя над его центром прошёл бы с запасом.
Доступно: + - * / ^, sqrt log ln abs sin cos tan exp, pi, e. Знак умножения можно опускать: 3sin(5x), 2pi, 2(x+1). Но x2 — ошибка, а не x*2: скорее всего вы имели в виду x^2.
Команды чата: -skip (общий голос за новую карту), -sayfunc / -stopsayfunc.
Дайте код или ссылку остальным — они на той же машине в сети.