Сделай законченную двумерную мини-игру.
ГЛАВНОЕ В ЭТОМ ЗАДАНИИ — САМА ИГРА. Одна ясная механика, которую можно описать одним предложением; исход зависит от решений и умения игрока, а не от удачи.
Что должно получиться:
* Правило понятно со стартового экрана в одно предложение. Проиграв, игрок видит, в чём ошибся.
* Партия конечна: от тридцати секунд до двух минут при хорошей игре. Сложность растёт, но проигрышных положений без вины игрока генерация не создаёт.
* Мир живёт уже на стартовом экране: в нём что-то движется до первого нажатия.
* Каждое действие даёт мгновенный отклик движением. Успех и ошибка выглядят по-разному.
* Счёт отражает успех игрока, а не прожитое время. Есть конец партии с итогом, рекорд за сессию и перезапуск одним действием. Рекорд при перезапуске сохраняется.
* Игра встаёт на паузу, когда вкладку свернули, и продолжается сама, когда к ней вернулись.
* Клавиатура, мышь и касание.
Качество исполнения. Сначала — цельная работающая игра, потом эффекты: если приём не выходит, упрости его до работающего.
Обязательный минимум:
* Все движения считаются от времени, а не от числа кадров: на медленном устройстве игра идёт с той же скоростью.
* Игрок, цель и опасность отличаются от фона с первого взгляда.
* То, что видно, совпадает с тем, что считается: предмет задевает другой там, где это видно глазом.
* Первые секунды нельзя проиграть мгновенно; опасность видна заранее, и есть время ответить.
* Области нажатия на телефоне не меньше 44 px; удержание, отпускание и потеря касания обрабатываются без залипаний.
* Весь круг проходит без сбоев: старт → игра → пауза → итог → перезапуск.
Что отличает сильную работу:
* Отклик однозначен и соразмерен событию: успех и ошибку не спутать. Он начинается сразу, даже если само движение плавное.
* Характер движения и смены экранов соответствует механике.
* Первые секунды сами учат правилу, без чтения инструкции.
* Нарастание оставляет время понять, что изменилось.
* Итог партии говорит больше, чем число: что получилось лучше всего и на чём сорвался.
* Цельный вид: всё на экране выглядит частью одной игры.
Это ориентиры качества, а не рамки для замысла: жанр, стиль и приёмы — твои. Любой ориентир можно выполнить по-своему; нельзя только оставить его без внимания. Простые надёжные приёмы (например, короткая вспышка или лёгкая тряска при ошибке, растяжение предмета при ударе — или любой другой заметный отклик) не хуже сложных, если игра от них живее.
Перед тем как сдать, пройди по коду: на ширине 320 px счёт и подсказки не мешают видеть игровое поле; рекорд переживает перезапуск.
Имей в виду: чаще всего делают змейку, flappy bird, тетрис, арканоид, пинг-понг, 2048, «уворачивайся от падающих предметов» и кликер — или их перекраски. Такая игра ничем не выделится. Запрета нет: если берёшь знакомую основу, добавь механику, которой там обычно нет и которая меняет способ игры, а не оформление.
Для автоматической проверки держи в `window.__игра` объект `{счёт, идёт, конец, пауза, рекорд, причина}`: `счёт` и `рекорд` — числа; `идёт`, `конец`, `пауза` — да/нет; `причина` — короткая строка, почему партия закончилась (пусто, пока идёт). Дай три функции: `window.__игра.начать()` — начинает партию и со стартового экрана, и с экрана итога, рекорд сохраняет; `window.__игра.ошибка()` — делает за игрока один настоящий ошибочный ход с обычными последствиями для счёта; `window.__игра.завершить()` — сразу заканчивает партию и показывает итог.
ОБЩЕЕ ДЛЯ ВСЕХ ЗАДАНИЙ СЕЗОНА (вставляется в конец каждого ТЗ)
Создай цельную вещь, в которой форма, движение и звук служат замыслу. Покажи лучшее, на что способна сама, — так, чтобы это увидел и услышал человек. За количество приёмов баллов нет: лишнее вредит.
Жёсткие условия:
* Один самодостаточный файл index.html, до 5 МБ (считается до подстановки заказанных картинок). Никаких внешних библиотек, шрифтов, ресурсов и сетевых запросов.
* Работает на компьютере и на телефоне (ширина от 320 px); на телефоне всё управляется касанием. Жесты над управляемой частью страницы или игровым полем не прокручивают страницу; остальное прокручивается как обычно.
* В консоли нет ошибок.
* Звук разрешён и приветствуется, но не обязателен. Только синтезом через WebAudio, только после первого нажатия, с видимым выключателем. Всё важное понятно и без звука.
* Нигде не называй себя и свою компанию — ни в тексте, ни в коде и комментариях, ни в описаниях картинок: работы судят вслепую, имя подпишет сайт.
* Работу откроют во встроенной рамке. Страница и её движение запускаются сразу, без нажатия. Первое нажатие внутри рамки включает звук. События лови на document: управление должно работать, не требуя попадания точно по холсту.
* Служебный объект для проверки: значения да/нет — это true/false, счётчики начинаются с нуля, объект показывает то, что на самом деле происходит. Служебные функции идут той же дорогой, что настоящее нажатие, а не отдельной.
Верни index.html целиком одним блоком кода и больше ничего. Единственное исключение — задание «о себе»: после блока кода можно дать список заказанных картинок.
Эту работу придумала и написала нейросеть Claude Opus 5.5 — по заданию четвёртого сезона сравнения нейросетей (пробный прогон). Сравнение нейросетей · что такое токены (?)