Головоломка Light-Bot на Android и iOS
Когда я учился в пятом классе, у нас был замечательный предмет, который назывался «Алгоритмика». Этот подраздел информатики, развивающий алгоритмическое мышление, был призван дать школьникам понятие о базовых конструкциях программирования через абстрактные сущности – вместо написания кода мы командовали Водолеями, собирали Ханойскую Башню, заставляли рисовать Чертежника и делали ещё много интересного. Настоящая кузница юных программистов. Но речь сейчас не о ней, а о замечательном приложении Light-Bot для iOS и Android, которое является очень занимательной головоломкой, построенной на принципах алгоритмики.
В этой игре мы тоже получаем в свои руки абстрактную сущность – настоящего робота. Он умеет ходить, прыгать и зажигать лампочки. Каждый уровень в Light-Bot для iOS и Android представляет собой клетчатое поле с разнообразным ландшафтом из кубиков и несколькими клетками, на которых нужно зажечь лампочки. Когда зажгутся все лампочки – уровень пройден. Задача игрока – обучить робота, чтобы он смог самостоятельно пройти уровень. Для этого есть игрушечный ассемблер, включающий в себя всего 28 инструкций (основная программа из 12 инструкций и две дополнительных функции по 8). Для программирования адского киборга доступно 5 команд. Ещё 2 отведены на вызовы дополнительных функций.
Обзор игры-головоломки Light-Bot
На данный момент Ligh-Bot насчитывает 18 уровней, каждый из которых отличается от предыдущего всё более сложным ландшафтом. Иногда мозг начинает потрескивать и приходит осознание настоящего значения слова «головоломка» — редкое явление для игрушек под iOS и Android с таким статусом. Несомненно, это делает честь Light-Bot.
Помимо непосредственного прохождения в Light-Bot есть ещё одна вещь, которая окажется увлекательной – это система очков. На iOS и ndroid в начале каждого уровня игроку дается 280 очков, а каждая использованная инструкция отнимает 10. По прохождении уровня оставшиеся очки приписываются к общей сумме. Это значит, что чем меньше игрок использует инструкций для прохождения уровней, тем больше у него очков.
Например, на момент написания данной заметки я прошел 12 уровней из 18 и набрал 1850 очков. То есть, я использовал (12*280 – 1850)/10 = 151 инструкцию.
Самое лучшее прохождение первых 12 уровней игры насчитывает всего 132 инструкции (по запросу «light bot 132 commands» на YouTube можно найти соответствующий ролик). Нетрудно догадаться, что оптимизация своего и так нелегкого прохождения игры является ещё одним поводом крепко задуматься, что только прибавляет головоломке хардкорности.
Одним из сугубо программерских трюков, которые позволяют сократить инструкции во время прохождения, является рекурсия – вызов функцией самой себя.
Правда, в Light-Bot на iOS и Android рекурсия пропитана какой-то особой уличной магией – функцию можно зациклить только в том случае, если внутри неё есть вызов другой дополнительной функции. Приведу пример (осторожно, спойлер - ниже приведены скриншоты с прохождением 3-го уровня, если вы ещё его не прошли, переходите к пункту «Минусы»). Итак, третий уровень.
Прохождение «в лоб», 10 инструкций:
С помощью рекурсии экономим одну инструкцию, теперь их 9. Но… не работает, все лампочки горят, но уровень не пройден:
Добавляем вызов пустой функции и уровень пройден, но у нас опять 10 инструкций
А вот идеальный вариант, в котором всё-таки 9 инструкций. Мы были близки:
Минусы
К минусам игры можно отнести малое количество уровней. Несмотря на то, что я ещё и имеющиеся не прошел, всё равно такая игра должна иметь много, очень много уровней, чтобы игроку было интересно решать множество головоломок. Но если учесть, что даже над уже пройденным уровнем можно долго биться в поисках лучшего решения, а также тот факт, что в Light-Bot на iOS и Android уже добавлено 5 новых уровней (в оригинальной игре их всего 12) и в перспективе будет несложно добавить ещё, то этот минус стоит отозвать.
Кстати, игра Light-Bot пришла на iOS и Android с Flash – её первоначальная версия была выложена на небезызвестном Armor Games. Там же можно найти неплохую поделку Light-Bot 2, которой пока нет на Android.
Также хотелось бы, чтобы в Light-Bot сохранялись решения каждого уровня. Если захочется пройти уровень снова, улучшив свой результат, то будут доступны только набранные очки. Решать головоломный уровень придется заново, хотя можно было бы просто подредактировать свой алгоритм.
Вердикт: Головоломная головоломка, в ходе которой мы программируем андроида под iOS и Android. Хотелось бы снять с игры прочно приклеенный сообществом геймеров ярлык «для программистов» — Light-Bot понравится любому человеку, который умеет мыслить абстрактно и решать логические задачи. Несмотря на то, что мы действительно программируем бота, сам геймплей лаконичен и бесконечно прекрасен как кубик Рубика или шахматы. Must-play для любого думающего геймера.
- Дата: 8-04-2020, 19:41