Язык форматирования оболочки - PullRequest
2 голосов
/ 23 августа 2011

В linux консольные приложения имеют возможность форматировать свои выходные данные.Они могут устанавливать цвет шрифта, задавать цвет фона и размещать знаки на консоли.Используя это, например, можно реализовать игру тетрис прямо в консоли.

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

Большое спасибо!

Ответы [ 3 ]

2 голосов
/ 23 августа 2011

Вам, очевидно, нужно овладеть всеми популярными видеоиграми Unix, rogue, srogue, larn, hack и / или nethack .Они имеют длинную и почтенную историю .

Примечательно, что все они используют стандартную curses - или совсем недавно, ncurses - библиотеку.Вот снимок экрана .

Поскольку у них нет джойстика, движение выполняется с помощью команд vi .Это лучший способ отточить свои навыки движения vi , которые когда-либо были изобретены: вам больше не придется печатать двумя пальцами!Вы перестаете думать о движении;это просто становится частью мышечной памяти ваших пальцев.Вы действительно должны играть в них, чтобы почувствовать удивительное состояние «Дзен» , которое вы можете получить, играя в них :

После достаточной практики вы чувствуете, как будто ваши пальцы самипомните, как играть пьесу.Вы даже не смотрите их.У них есть работа, и, как только они ее изучат, они могут выполнять эту работу совершенно свободно без непосредственного надзора.Ключ к очищению ума от внешнего мира, чтобы программа стала доминирующей реальностью, - это то, что музыкант назвал бы «памятью пальцев».(Возможно, вы слышали, что спортсмены или танцоры называют это мышечной памятью, но когда мы говорим об использовании компьютера, на самом деле учитываются пальцы.)

[...] Конечно, этоне совсем то, что происходит;это только кажется.Твои пальцы на самом деле не помнят.Но часть вашего мозга, которая управляет ими, делает это, даже если «вы» этого не понимаете.Случилось так, что вы настолько успешно усвоили необходимые шаги, что сознательное направление больше не требуется.Маленький хранитель маяка за вашим лбом может беспокоиться о других вещах, будучи уверенным, что ваши пальцы выполнят ту работу, которую вы учили их.Ваши глаза на экране, программа в вашей голове, и ваша голова в программе.Ваши пальцы становятся незамеченным продолжением вашей воли.[...]

[...] Нет сомнений в том, что для определенных задач клавиатура является оптимально эффективным устройством ввода. Рассмотрим игру rogue или одно из ее более поздних воплощений. Вам не захочется использовать там ничего, кроме клавиатуры.Набор команд слишком богат.Пытаясь играть в игру с помощью интерфейса мыши и меню вместо клавиатуры, вы замедлите себя как минимум на два порядка.

Семейство видеоигр rogue также примечательно тем, что показывает как написать видеоигру для обычного терминала, такого как vt100 или xterm , который, я считаю, это то, что вы ищете.Я бы, наверное, использовал более современный язык, чем С, но все же применяются те же принципы.И Perl, и Python имеют хорошие интерфейсы для этих стандартных библиотек.

2 голосов
/ 23 августа 2011

Большинство консольных приложений, в которых много движения или цвета, построены с использованием библиотеки ncurses . Некоторые очень распространенные примеры: irssi (IRC-клиент), mc (Midnight Commander, консольный файловый браузер), mutt (POP3 / IMAP почтовый клиент)

Похоже, вы уже знаете коды перехода, используемые для изменения цветов консоли. Хороший список escape-последовательностей цветов консоли (для Bash) можно найти здесь.

1 голос
/ 23 августа 2011

Это не столько язык разметки, сколько серия escape-последовательностей , которые запускают средство просмотра терминала определенным образом.

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

Если вы собираетесь создать полноценное приложение, вам следует рассмотреть возможность использования некоторой библиотеки, такой как ncurses, которая делает их управляемыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...