«Час пик»
Головоломка на планирование: развезти очередь пассажиров, выводя автобусы с забитой парковки. Написана с нуля — свои правила, свой решатель уровней, своя графика в коде. Вторая, самостоятельная реализация тех же правил на JavaScript даёт играть по ссылке, без магазина приложений.

О проекте
Сверху — очередь пассажиров, снизу — забитая парковка автобусов. Автобус выезжает на платформу, только если перед его стрелкой до края парковки пусто; на платформе три места, пассажиры садятся сами — каждый в автобус своего цвета. Кому автобуса нет, тот ждёт на скамейке; кончилась скамейка и посадить некого — затор.
Игра сделана без единой сторонней библиотеки: 6 646 строк своего кода — 3 787 на Swift для iOS и 2 322 на JavaScript для браузера. Правила вынесены в отдельную структуру без единой ссылки на интерфейс, поэтому ту же партию можно тысячами копий прогонять в решателе.
Веб-версия — не обёртка вокруг приложения, а вторая самостоятельная реализация тех же правил. Она ставится на домашний экран как обычное приложение и работает офлайн после первого открытия. Клиенту достаточно ссылки.
Возможности
Решатель уровней
Перебор ходов по состояниям с отсечением повторов: до 200 000 состояний в приложении и 120 000 в браузере. Уровень отдаётся игроку, только если решатель дошёл до победы — непроходимая раскладка исключена.
Подсказка из выигрышной ветки
Подсказка отдаёт не «любой доступный ход», а первый ход той ветки, которая ведёт к победе. Её считает тот же решатель.
Своя метрика сложности
Проверки «уровень проходится» мало: она не отличает головоломку от коридора. Считаем долю первых ходов, ведущих в тупик, и требуем её роста по уровням — от нуля на первых шести до 0,45 после двадцатого.
Генератор со ступенями смягчения
Если решатель не находит проход, генератор снимает сложность по одной ступени: сначала чемоданы, потом замки и шлагбаумы, теснота, и лишь в последнюю очередь возвращает третье место на платформе. Сложный уровень деградирует плавно, а не обрывается.
Одинаковый «уровень дня» у всех
Свой детерминированный генератор случайных чисел вместо стандартного: уровень с одним номером раскладывается одинаково на любом устройстве, а ежедневная задача солится датой — всем в этот день выпадает одна и та же.
Графика рисуется кодом
Асфальт с разметкой, платформа с навесом, скамейка, город на горизонте, шлагбаумы и замки рисуются в текстуры на лету. Спрайты автобусов и пассажиров собираются из слоёв SVG одним скриптом сразу для iOS и для браузера — силуэт красится цветом маршрута.
Экраны игры


Стек технологий
Результат
Хотите так же?
Соберём сайт, платформу или мобильное приложение под вашу задачу — быстро, под ключ и с личным кабинетом. Бесплатная оценка сроков и цены — обычно отвечаем в течение часа в рабочее время.
Обсудить проект