Всем привет😁! Я пишу, чтобы поделиться решением проблемы, которая возникла у меня, когда я работал над личным проектом, Игра Змейка на C ++, запущенная на консоли. Закончив логику игры, я попытался сделать ее лучше, поэтому решил печатать цветные символы на экране, но, насколько мне известно, в этом языке нет собственных функций для этого 😥. По этой причине я искал какую-то внешнюю библиотеку, однако я не хотел импортировать много вещей для выполнения такой простой задачи, и в итоге я нашел лучшее решение: escape-код ANSI .

Почему я считаю, что использовать их - это хорошая идея?

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

Итак, что такое escape-код ANSI?

Управляющие последовательности ANSI - это стандарт, разработанный в 70-х годах и используемый для форматирования выходных данных в компьютерном терминале. Они состоят из тегов, благодаря чему консоль интерпретирует то, что будет дальше, как команду, а не как простую строку. Эти коды очень полезны и могут делать многое, например: перемещать курсор, применять жирный или курсивный шрифт к тексту, очищать экран и изменять цвет фона. Однако в этой статье я расскажу только о цветовых кодах.

Где это работает?

Эта функция совместима с ОС на основе систем Unix, если вы используете дистрибутивы Linux, такие как Ubuntu или macOS, это руководство, вероятно, будет работать нормально🙃. С другой стороны, Windows стала совместимой с escape-кодом ANSI после версии 1511 Windows 10. Если вы установили Windows Terminal на свой компьютер, вам повезло! Потому что по умолчанию он совместим с escape-кодом👏. Предыдущие версии Windows, такие как 8.1 или 7, изначально не совместимы с ней, поэтому вам может потребоваться установить некоторые дополнительные программы. Если вы хотите использовать только материалы по умолчанию, этот учебник вам не подойдет😢.

Давайте начнем!

Код выглядит так:

\ESC[code Your output \ESC[m

Первые две цифры тега - это ASCII-значение ESC, (27, 1Bh, 33o) и «[» (91, 5Bh, 133o), другая часть - это буквенно-цифровой код, представляющий некоторую операцию, которая будет применяться в выводе. . У нас также есть стоп-тег, который является последней частью команды, и его функция, как следует из названия, заключается в прекращении применения изменений в консоли.

Восемь цветов

У escape-кода есть некоторые спецификации цвета, самый простой из них имеет только восемь тонов для текста и фона, с дополнительным более светлым вариантом, я распечатал их в таблице ниже:

Значения в таблице от 30 до 37 и от 40 до 47 представляют стандартные цвета текста и фона, соответственно, 30 не читаются, потому что они черные. Значения в диапазоне 90–97 и 100–107 являются более светлыми версиями переднего плана и экрана.

Код, использованный для создания этой таблицы, находится здесь:

Кроме того, если вы хотите изменить и текст, и фон, вы можете написать свой код следующим образом:

ESC[background_colour;Text_colourm output ESC[m”

Приложение того, что я сказал выше, находится здесь:

Код здесь, я написал только ту часть, которая имеет значение для печати, а не всю подпрограмму.

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

256 цветов

Другая спецификация, о которой я хочу поговорить, намного более полная, она насчитывает 256 вариантов текста и цвета фона, со всеми этими альтернативами вы можете дать волю своему воображению, пока вы рисуете свой компьютерный терминал😎!

Текст

Этот код печатает таблицу с 256 оттенками цветов текста, созданную с использованием escape-кода ANSI.

Фон

Этот генерирует все варианты, доступные с 256 кодировками.

Если вы посмотрите на последние фрагменты кода, которые я показал, вы заметите, что у них есть номер в начале кода. Первый имеет 38, это означает, что мы работаем с цветом текста. Второй имеет 48 и показывает системе, что код является референтом фона консоли.

Классно! Тебе не кажется? Мы перешли от черно-белого терминала к очень красочному!

Вот ссылки, которые я использовал при написании этой статьи: