Компиляция Змейки В Браузере

Вы видели эмулятор Linux на ПК, написанный на JavaScript? Если нет, то вот небольшой пост о нем .

И здесь сам .

Этот эмулятор — хороший способ познакомиться с консолью Linux. Если у вас установлена или была Ubuntu (а это тоже Linux), то она имела пользовательский интерфейс как у Windows, программы и игры устанавливаются с помощью менеджера пакетов.

Ну что тут делать? Одним из действий приложения, которое можно выполнить в Linux, является компиляция программы из исходного кода.

Если вы когда-либо писали программу, вы использовали IDE, например Visual Studio или CodeBlocks, но в данном случае, очевидно, IDE нет. Но можно скомпилировать код из консоли с помощью программы gcc, которая очень удобно включается в образ системы.

Все, что вам нужно сделать, это написать в консоли: gcc hello.c и нажмите [ВВОД] Здесь hello.c — имя файла, а точнее путь к нему, но сейчас мы пишем только имя, так как hello.c находится в текущей папке.

Да, в консоли у нас есть текущая папка, путь к ней прописан слева от # или $ ( # - это значит, что мы работаем под rootом с неограниченными правами; $ - под обычным пользователем).

Перемещаемся по папкам с помощью компакт-диск %имя_папки% или CD. для перемещения папки вверх по иерархии, а также лс чтобы вывести список файлов и папок в текущей папке:

Компиляция змейки в браузере

Ну, мы заказали gcc hello.c и ждать: (hello.c ранее был помещен автором в образ системы для тестирования)

Компиляция змейки в браузере

Я подождал минуту или две, но программа все равно скомпилировалась.

gcc создал файл a.out (имя по умолчанию), это готовый бинарник, так что запустим его: Если просто написать название программы, то интерпретатор командной строки скажет, что такого файла он не нашел, потому что в этом случае он смотрит не в текущую папку, а в /usr/bin, например, и в другие места, где находятся такие программы, как cd, ls, gcc. Вот почему мы пишем .

/a.out : ( .

/ - означает текущую папку)

Компиляция змейки в браузере

На экране видим Hello, World, а это значит, что все работает. Но целая минута на helloworld — это долго! Нельзя ли быстрее? Есть простое решение: вместо компилятора gcc использовать tcc — все то же самое, только вместо него gcc hello.c нужно написать тсс привет.с Попробуем скомпилировать что-нибудь посложнее! Правда, запускать мы можем только консольное приложение, поэтому возьмем исходный код консольного змея нснейк .

В архиве находится папка src, в которой находится именно то, что нам нужно.

Но вот вопрос: как нам перенести эти файлы в наш эмулятор? Ответ на этот вопрос есть в FAQ по эмулятору: Вам необходимо использовать буфер обмена - область для вставки текста справа и команду (программу) cat < and > — это перенаправление входных и выходных потоков соответственно для команды cat: кот < /dev/clipboard > main.c Также необходимо создать папку для игры и папку src (командой источник mkdir ), в который копируем исходники.

В итоге процесс выглядит так:

Компиляция змейки в браузере

Используя стрелки вверх/вниз, вы можете перемещаться по истории введенных команд. Итак, чтобы не вводить каждый раз команду, можно с помощью стрелки вверх показать предыдущую и отредактировать ее.

Исходники на месте, теперь их нужно скомпилировать, а потом поиграем.

Но это не так просто; попытка скомпилировать любой из файлов приведет к ошибке:

Компиляция змейки в браузере

Дело в том, что компиляция всего проекта иногда очень сложна и трудоемка, нужно добавлять опции в компилятор и компоновщик, чтобы компилировать файлы по отдельности, а затем собирать объектные файлы вместе, использовать внешние библиотеки, но программа также содержит документация и многое другое.

Чтобы вы об этом не думали, при компиляции программы из исходников пишется Makefile — там просто прописано, как компилировать и так далее.

Короче говоря, вам нужно скопировать его в папку с игрой на эмуляторе.

Также вам необходимо создать папки bin, obj и doc, как в папке с игрой, которая есть на вашем компьютере.

Входить делать — программа, которая будет обрабатывать Makefile и компилировать всё согласно ему.



Компиляция змейки в браузере

В общем, я устал ждать и нажал CTRL+C, чтобы завершить процесс.

Почему так долго? Потому что в Makefile написано, что компилировать нужно с помощью gcc, а нам это не нужно, нам нужно быстрее, используя tcc. Итак, мы находим следующую строку в Makefile и заменяем gcc на tcc:

Компиляция змейки в браузере

Удалите старый Makefile, скопируйте новый и начните заново.

делать : UPD: Более простой вариант от ZyXI : сделать CC=tcc

Компиляция змейки в браузере

Намного быстрее.

Большой! Там написано, что уже можно играть! Обратите внимание, что были скомпилированы только те файлы, которые gcc в прошлый раз недокомпилировал.

Потому что файлы компилировались отдельно, и у каждого файла C был свой файл .

OBJ в папке obj, а потом они компилировались в исполняемый файл в папке bin. Запуск ( бин/нснейк ), экран очищается и.



Компиляция змейки в браузере

Так! Мы увидели, что файлы отображаются разными цветами! Ну да ладно, поиграем в змейку без цветочков.

В исходном коде змейки есть строка, которая выводит на экран сообщение об ошибке и, что самое главное, прерывает работу программы.

Если его удалить, игра может вылететь, так как функция, управляющая цветом символов терминала, выйдет из строя.

Или, может быть, это как-то сработает. Код находится в файле engine.c в строке 243:

Компиляция змейки в браузере

Перед каждой из двух строк пишем по две косые черты — теперь код неактивен, то есть закомментирован.

Снова создаем engine.c и пересобираем программу:

Компиляция змейки в браузере

Теперь змейка запускается и мы видим меню игры.

Ура!

Компиляция змейки в браузере

Есть проблема с выбором уровня сложности и наличием ребер.

Во-первых, из-за того, что цветов нет, и активный элемент подсвечивается другим цветом.

Они также выбираются стрелками, а стрелки в игре не работают. Вы можете играть, используя WASD.

Компиляция змейки в браузере

PS: Для полной установки игры нужно скопировать документацию и запустить сделать установку , но здесь будут проблемы.

Такая возможность пока не рассматривалась: если у вас уже есть исполняемый файл игры, вы можете перенести его в эмулятор с помощью uuencode и uudecode (это также написано в Часто задаваемые вопросы ).

UPD: по команде ТЕРМИН=хтермин решена проблема нехватки цветов, и ТЕРМИН = Linux заставляет стрелки работать до конца - можно выбрать уровень сложности и наличие ребер.

Спасибо кекекекс за чаевые.

(однако появляется странный глюк - правая граница размазывается по элементам слева - см.

скриншот в комментариях) Теги: #linux #snake #console #консольные игры #новичкам #эмулятор #компиляторы #компиляторы

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.