Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
3 / 3 / 0
Регистрация: 12.12.2013
Сообщений: 93

Как получить более 16 цветов текста в консоли?

27.08.2018, 22:49. Показов 2967. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Использую данный код для смены цвета текста:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
enum ConsoleColor
{
    Black = 0,
    Blue = 1,
    Green = 2,
    Cyan = 3,
    Red = 4,
    Magenta = 5,
    Brown = 6,
    LightGrey = 7,
    DarkGrey = 8,
    LightBlue = 9,
    LightGreen = 10,
    LightCyan = 11,
    LightRed = 12,
    LightMagenta = 13,
    Yellow = 14,
    White = 15
};
void setColor(ConsoleColor text, ConsoleColor background)
{
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
Использую его в разработке небольшой игры, однако хотелось бы, чтобы каждый показатель был окрашен в свой цвет. Цветов соответственно нужно много. Что для этого посоветуете?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.08.2018, 22:49
Ответы с готовыми решениями:

Как поменять цвет текста консоли на любой цвет из RGB цветов
Цвет консоли можно поменять используя только 16 встроенных цветов или можно использовать комбинации RGB? Console.ForegroundColor =...

Чтение части текста в консоли с сохранением цветов
Можно ли прочитать часть текста в консоли с сохранением цветов? Нужно скопировать в некой области текст с сохранением цветов и после...

Как сделать текст на консоли двух цветов?
Подскажите как сделать так, чтобы текст в консоли сделать двух цветов ? К примеру вот код: system(&quot;color C&quot;); cout...

10
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
27.08.2018, 22:55
Цитата Сообщение от ApocalypsisRus Посмотреть сообщение
Что для этого посоветуете?
Используйте цвет + фон. Итого у вас будет 16 * 15 = 240 раскрасок для одного символа. А если еще задействовать другие символы, то можно еще увеличить количество обозначений. Или у вас не текстовая игра будет?
0
3 / 3 / 0
Регистрация: 12.12.2013
Сообщений: 93
27.08.2018, 23:00  [ТС]
Это понятно, видел такое. Однако хочется, скажем так, буйства красок. Есть возможность организовать такое в C++ (библиотека там какая-нибудь)?
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
27.08.2018, 23:44
ApocalypsisRus, не знаю на счет расширения количества цветов текста, но точки, например, можно раскрасить во много цветов. Хотя через WinAPI все это делать мне кажется извращением.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <Windows.h>
 
using namespace std;
 
int main()
{
    HWND hwnd = GetConsoleWindow();
    HDC dc = GetDC(hwnd);
    
    for (int i = 255; i >= 0; i -= 4)
    {
        for (int j = 100 - i / 4; j <= 100 + i / 4; ++j)
        {
            for (int k = 100 - i / 4; k <= 100 + i / 4; ++k)
                SetPixel(dc, j, k, RGB(i, i, 0));
        }
    }
 
    system("pause");
    return 0;
}
Добавлено через 7 минут
Цитата Сообщение от ApocalypsisRus Посмотреть сообщение
библиотека там какая-нибудь
Есть куча графических библиотек, но сомневаюсь, что в них есть привязки к консоли. Если это не критично, то всякие там SFML, OpenGL, Direct3D и т.п.
0
3 / 3 / 0
Регистрация: 12.12.2013
Сообщений: 93
27.08.2018, 23:48  [ТС]
Мне тоже это кажется извращением. Видимо, буду пробовать через SFML. Спасибо за помощь!
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.08.2018, 12:21
Цитата Сообщение от ApocalypsisRus Посмотреть сообщение
Есть возможность организовать такое в C++ (библиотека там какая-нибудь)?
К языку Си++ это никакого отношения не имеет. 16 цветов - это ограничение стандартной виндузовой консоли
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,914
29.08.2018, 09:37
Цитата Сообщение от ApocalypsisRus Посмотреть сообщение
(библиотека там какая-нибудь)?
ncurses (тут с ним шаманили немного)
С другой стороны, некоторые консоли вообще цветов не поддерживают: зеленый текст на черном экране и хоть обкомандуйся.
0
3 / 3 / 0
Регистрация: 12.12.2013
Сообщений: 93
29.08.2018, 18:16  [ТС]
Вас понял, и также заметил, что ncurses есть только под Linux, a с ним искать поразумления пока что лень . Да вот появился другой вопрос: с чего бы это у меня стали как-то неправильно отображаться цвета, например, желтый превратился в почти белый, разница между светлыми и темными вариациями цветов практически отсутствует (раньше она была явно заметна).
Ниже приложил скрин, где сравниваю абсолютно темный фон в Dwarf Fortress и какой-то блеклый фон у себя в игре, однако цвет фона с Black я вообще не меняю. Почему такое может происходить?
Миниатюры
Как получить более 16 цветов текста в консоли?  
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
29.08.2018, 18:42
Фоновый цвет и цвет букв идентичный (можешь проверить в том же пэйнте). Отличие только в рамке.
0
3 / 3 / 0
Регистрация: 12.12.2013
Сообщений: 93
29.08.2018, 18:48  [ТС]
Проверил и специально выкладываю обновленный скрин со сравнением цветов (продлил цвет из одного окна в другое).
Миниатюры
Как получить более 16 цветов текста в консоли?  
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,914
30.08.2018, 09:52
Цитата Сообщение от ApocalypsisRus Посмотреть сообщение
Вас понял, и также заметил, что ncurses есть только под Linux
Чушь. Если бы почитали тему, на которую я ссылался, увидели бы сборку под Windows. Если бы погуглили - тоже.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.08.2018, 09:52
Помогаю со студенческими работами здесь

Графические режим, как использовать более 16 цветов?
Можно ли выйти за пределы 16-и цветов? и КАК? (OpenGL и DirectX не предлагать))

Получить из множества цветов спектра новое множество путем исключения трех цветов
Задано множество, содержащее все цвета светового спектра от красного до фиолетового. Получить из этого множеств новое ...

Memo: получить все предложения текста, которые состоят из 30 и более символов
Задали прогу нужно зделать через Компонент Memo зделать невыходит поэтому обращаюсь к вам форумчане. Задание: Дано текст. Получить все...

Как получить массив цветов пикселей в BMP?
и как изменить цвет пикселя?

Как с консоли переходят к более серьёзному программированию?
2 года назад изучал С++, однако писать приходилось только консольки. Позже начал ходить на курсы по С++, там мы писали уже формы. Так,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru