Как создать цветной графический интерфейс в консольном приложении?

Для следующих вопросов ответы могут быть для C / C ++, C # или Python. Я бы хотел, чтобы ответы были кросс-платформой, если это возможно, но я понимаю, что мне, вероятно, понадобится conio или ncurses

  1. Как вывести цветной текст?
  2. Как мне сделать графический интерфейс, например, top или nethack когда определенные вещи «нарисованы» на определенные пространства в терминале?

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

    Да, это коды выхода VT100. Самое простое – использовать какой-то вкус проклятий. Однажды вы выбираете аромат проклятий, довольно просто сделать как 1, так и 2.

    Вот как на ncurses.

    http://web.cs.mun.ca/~rod/ncurses/ncurses.html

    С этой точки зрения консоль во многом представляет собой эмуляцию классического терминального устройства. Curses был создан первоначально для поддержки способа выполнения общих операций с различными типами терминалов, где пользовательский терминал может быть выбран пользователем как часть последовательности входа. Это наследие сохранилось сегодня в ncurses.

    Библиотека ncurses предоставляет функции, позволяющие напрямую позиционировать курсор и испускать текст, и, как известно, он работает в консоли Windows (где выполняется CMD.EXE), а также на различных эквивалентах платформы * nix, таких как XTerms и т. П. Вероятно, он даже работает с истинным Dec VT100 по последовательной линии, если у вас есть такая вещь …

    Управляющие последовательности, понятные для моделей VT100 и более поздних версий, стали основой для стандартного терминала ANSI. Но вы действительно не хотите знать об этом. Используйте ncurses, и вам не придется.

    Опираясь на conio, вы не получите кросс-платформу, поскольку это API DOS / Windows.

    Edit: По-видимому, сама библиотека ncurses не просто построена на mingw, по крайней мере, как это наблюдается при быстрой попытке Google. Однако все не потеряно, поскольку ncurses является только одним из потомков исходной библиотеки curses .

    Другим является PDCurses, который, как известно, компилируется и запускается для консолей Windows, а также для X11 и различных платформ * nix.

    (Мне просто напомнили о погоне за ссылками в Википедии, что проклятия возникли из-за написания игрового изгоя, который является предком взлома. Некоторые из его кода были «заимствованы» из модуля управления курсором в редакторе vi. Так что spelunking в исходном наборе исходных текстов для идей, возможно, совсем не сумасшедшая идея …)

    Большинство окон терминалов понимают escape-последовательности ANSI, которые позволяют раскрасить, перемещать курсор и т. Д. Здесь вы можете найти их список.

    Использование этих последовательностей может показаться немного «старой школой», но вы можете использовать их в тех случаях, когда проклятия на самом деле не применимы. Например, я использую следующую функцию в моих сценариях bash, чтобы отображать сообщения об ошибках красным:

     color_red() { echo -e "\033[01;31m$1\033[00m" } 

    Затем вы можете сказать такие вещи, как:

     color_red "something has gone horribly wrong!" exit 1 

    Не перекрестная платформа, но для цвета Windows / C #, см.

    Цвет текста консоли (C #)

    C ++

    В C # вы можете установить цвет текста и цвет фона с помощью свойств Console.ForegroundColor и Console.BackgroundColor, соответственно. Список допустимых цветов см. В этом документе MSDN .