Интересные проекты: «змейка» для терминала, работающая на этапе компиляции
Нашли интересный проект на GitHub — это «змейка» на C++, которая работает во время компиляции. Ещё один способ отвлечься от важных дел.
7К открытий7К показов
Проект, написанный Мэттом Бирнером, представляет собой новую версию игры «Змейка». Правда, сейчас в неё поиграть удастся прямо в терминале или командной строке.
Проект использует шаблонное метапрограммирование стандарта С++14. Игра доступна в двух версиях — интерактивной, когда игроку необходимо каждый раз перекомпилировать файл с новыми командами, и статичной, когда для игры необходима лишь однократная компиляция всех файлов. Отметим, что игра заканчивается, как и в обычной версии, когда змея упирается в стены игрового поля или своё собственное тело.
Интерактивная версия
Для отображения каждого нового хода необходима перекомпиляция файлов с флагами для контроля процесса игры:
Параметры флага -D
управляют движением змейки по игровому полю: UP
,DOWN
,RIGHT
и LEFT
. Если флаг не был передан компилятору на исполнение, то змейка продолжит своё движение прямо. Есть возможность вернуться в исходное положение, запустив скрипт ./reset.sh
. Для сохранения положения змеи между компиляциями используется подход сериализации данных.
Статичная версия
Весь игровой процесс происходит при однократной компиляции программы. Вся логика игры этой версии находится в главной ветке проекта на GitHub. Все движения змеи строго указаны в главной функции программы:
Исходный код
Исходный код инструмента можно найти на GitHub. Интерактивная версия находится в соответствующей ветке проекте interactive
, статичная версия — в главной ветке. Подробное описание функций программы можно найти в блоге автора, в котором также есть отдельное описание как интерактивной версии, так и статичной.
Игровой процесс
Ниже приведён игровой процесс интерактивной версии игры, при которой пользователь решает, в каком направлении змея должна двигаться, посредством указания параметров флага -D
. Для статичной версии всё аналогично, за исключением того, что нужно всего лишь наблюдать за процессом игры, а не участвовать в нём, так как от пользователя требуется лишь компиляция файла для запуска игры.
7К открытий7К показов