Форум программистов, компьютерный форум CyberForum.ru

Предоставить пользователю возможность выбрать цвет фона и текста в консоле - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
9iroslav
0 / 0 / 0
Регистрация: 04.08.2012
Сообщений: 12
04.08.2012, 16:40     Предоставить пользователю возможность выбрать цвет фона и текста в консоле #1
Помогите пожалуйста написать программу, которая бы предоставляла пользователю возможность выбрать цвет фона и текста консоли, с помощью операторов: switch и system ("color").
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2012, 16:40     Предоставить пользователю возможность выбрать цвет фона и текста в консоле
Посмотрите здесь:

Цвет текста в консоле C++
Цвет фона консоли с++ C++
C++ Цвет фона строки
C++ Вывести на экран, задав цвет фона и текста из текстового документа
Цвет фона и текста в тексотовом редакторе C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
04.08.2012, 16:57     Предоставить пользователю возможность выбрать цвет фона и текста в консоле #2
А проблемма то в чём ? Программу написать за вас ?
9iroslav
0 / 0 / 0
Регистрация: 04.08.2012
Сообщений: 12
04.08.2012, 17:07  [ТС]     Предоставить пользователю возможность выбрать цвет фона и текста в консоле #3
Я могу написать, но она будет слишком объемная. Проблема в том, что я не знаю как сделать ее менее объемной.
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
04.08.2012, 17:08     Предоставить пользователю возможность выбрать цвет фона и текста в консоле #4
Цитата Сообщение от 9iroslav Посмотреть сообщение
Я могу написать, но она будет слишком объемная. Проблема в том, что я не знаю как сделать ее менее объемной.
Ну так давайте с вашей слишком объемной вместе сделаем менее объемную!
Богдан Корниено
 Аватар для Богдан Корниено
9 / 9 / 1
Регистрация: 24.03.2011
Сообщений: 152
04.08.2012, 17:23     Предоставить пользователю возможность выбрать цвет фона и текста в консоле #5
Как менять цвет фона написано здесь.

Определение цвета текста и фона в консоли выполняется функцией system() с аргументом "color bt". Где b, это цвет фона, а t - текста.

Списак стандарнтых цветов есть в ссылке, что я указал выше.
Оператор switch нам даже не понадобится. И его использование будет не очень красивое.
Алгоритм прост. Сначала пользватель вводит первый цвет для фона, второй для текста. Затем это все компануетсв в строку, и выполняется функция system();

Код простого приложения выполненного в Dev C++:
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
25
26
27
28
#include <cstdlib>
#include <iostream>
#include <string>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int text_color = 0;
    int back_color = 0;
    static char in_str[10];
    static char result[8];
    
    cout << "Select back color: 4-red, 1-blue" << endl;
    cin.getline(in_str, 10);
    back_color = atoi(in_str);
    
    cout << "Select text color: 4-red, 1-blue" << endl;
    cin.getline(in_str, 10);
    text_color = atoi(in_str);
    
    // : compile stroke
    sprintf(result, "color %d%d", back_color, text_color);
    system(result);
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
9iroslav
0 / 0 / 0
Регистрация: 04.08.2012
Сообщений: 12
04.08.2012, 17:25  [ТС]     Предоставить пользователю возможность выбрать цвет фона и текста в консоле #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <stdlib.h>
int main(void) {
 
   char a, b;
   char cmd[16];
 
   scanf("%c%c", &a, &b);
   sprintf(cmd, "color %c%c", a, b);
   system(cmd);
 
   getchar();
   return 0;
}
Есть вот такая программа, хочу сделать примерно такую же по объему, но с помощью операторов switch и system ("color"). Если это возможно, то подскажите как.
Богдан Корниено
 Аватар для Богдан Корниено
9 / 9 / 1
Регистрация: 24.03.2011
Сообщений: 152
04.08.2012, 17:29     Предоставить пользователю возможность выбрать цвет фона и текста в консоле #7
С переключаетелм жетко будет. Это нужно будет сделать сначала переключатель для цвета фона, например. А потом в каждый из вариантов включить еще по переключателю. Причем все эти переключатели будут повторяться. У вас хороший вариант. Не понимаю, зачем его менять?
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
04.08.2012, 17:44     Предоставить пользователю возможность выбрать цвет фона и текста в консоле #8
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
25
26
27
28
29
30
31
32
#include <iostream>
#include <conio.h>
using namespace std;
void FunColor()
{
    cout<<"0 - черный"<<endl;
    cout<<"1 - синий"<<endl;
    cout<<"2 - зеленый"<<endl;
    cout<<"3 - голубой"<<endl;
    cout<<"4 - красный"<<endl;
    cout<<"5 - лиловый"<<endl;
    cout<<"6 - жёлтый"<<endl;
    cout<<"7 - белый"<<endl;
}
int main()
{
    setlocale(0, "rus");
    int buf=1;
    char str[80]="color ";
    char fon[2], text[2];
    FunColor();
    cout<<"Выберите цвет фона: ";cin>>fon;
    cout<<"Выберите цвет текста: ";cin>>text;
    strcat(str, fon);
    strcat(str, text);
    switch(buf)
    {
        case 1:system(str);
    }
    getch();
    return 0;
}
9iroslav
0 / 0 / 0
Регистрация: 04.08.2012
Сообщений: 12
04.08.2012, 17:45  [ТС]     Предоставить пользователю возможность выбрать цвет фона и текста в консоле #9
На курсах мы пока изучили только эти операторы, и задачу надо выполнить именно с помощью этих операторов
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
04.08.2012, 18:06     Предоставить пользователю возможность выбрать цвет фона и текста в консоле #10
Через switch можно вывести названия выбранных цветов. Это будет еще как-то понятно. Но что там еще через siwtch делать, не представляю...

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
25
26
27
28
29
30
31
32
33
34
35
void OutputSlectedColorName(char backColor, char foreColor)
{
    // Еще нужно учесть, что a...f могут быть в нижнем регистре
    
    char color = '\0';
 
    for (int i = 0; i < 2; ++i)
    {
        if (i == 0) {color = backColor; cout << "Background color is ";}
        else {color = foreColor; cout << "Foreground color is ";}
 
        switch (color)
        {
        case '0': cout << "Black"; break;
        case '1': cout << "Blue"; break;
        case '2': cout << "Green"; break;
        case '3': cout << "Aqua"; break;
        case '4': cout << "Red"; break;
        case '5': cout << "Purple"; break;
        case '6': cout << "Yellow"; break;
        case '7': cout << "White"; break;
        case '8': cout << "Gray"; break;
        case '9': cout << "Light Blue"; break;
        case 'A': cout << "Light Green"; break;
        case 'B': cout << "Light Aqua"; break;
        case 'C': cout << "Light Red"; break;
        case 'D': cout << "Light Purple"; break;
        case 'E': cout << "Light Yellow"; break;
        case 'F': cout << "Bright White"; break;
        default: cout << "Unknown Color";
        }
 
        cout << std::endl;
    }
}
-=ЮрА=-
Заблокирован
Автор FAQ
04.08.2012, 20:11     Предоставить пользователю возможность выбрать цвет фона и текста в консоле #11
Думаю я буду одним из первых кто покрасил консоль вот так
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <windows.h>
 
#define RED BACKGROUND_RED
#define GRN BACKGROUND_GREEN
#define BLU BACKGROUND_BLUE
#define WHT BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE
#define BLK NULL
 
BOOL ParseVirtualKey(int vKey)
{
    BOOL bRet = FALSE;
    if(GetAsyncKeyState(vKey))
        bRet = GetAsyncKeyState(vKey);
    return bRet;
}
 
BOOL ConsolePrint(HANDLE hOUT, LPCTSTR szMSG, WORD wSize)
{
    DWORD dwWrite = 0;
    PVOID lpBuf   = 0;
    BOOL bRet = WriteConsole(hOUT,szMSG,strlen(szMSG),&dwWrite,NULL);
    dwWrite   = wSize - dwWrite;
    if(lpBuf  = VirtualAlloc(lpBuf,dwWrite,MEM_COMMIT,PAGE_READWRITE))
    {
        if(bRet = WriteConsole(hOUT,memset(lpBuf,' ',dwWrite),dwWrite,NULL,NULL))
           bRet = WriteConsole(hOUT,"\n",NULL,NULL,NULL);
        VirtualFree(lpBuf,dwWrite,MEM_RELEASE);
    }
    return bRet;
}
    
 
int main()
{
    CONSOLE_SCREEN_BUFFER_INFO pINFO = {0};
    HANDLE hOUT= GetStdHandle(STD_OUTPUT_HANDLE);
    GetConsoleScreenBufferInfo(hOUT, &pINFO);
    
    COORD  pCUR= {0};
    BOOL bExit = FALSE;
    BOOL bChange= FALSE;
    WORD wCOLOR = BLK;
    WORD wSize  = pINFO.dwSize.X;
    
    while(!bExit)
    {   
        SetConsoleCursorPosition(hOUT, pCUR);
        ConsolePrint(hOUT, "***MENU***" ,wSize);
        ConsolePrint(hOUT, "NUM 0 - BLACK",wSize);
        ConsolePrint(hOUT, "NUM 1 - RED  ",wSize);
        ConsolePrint(hOUT, "NUM 2 - GREEN",wSize);
        ConsolePrint(hOUT, "NUM 3 - BLUE ",wSize);
        ConsolePrint(hOUT, "NUM 4 - WHITE",wSize);
        ConsolePrint(hOUT, "ESC   - EXIT ",wSize);
        GetConsoleScreenBufferInfo(hOUT, &pINFO);
        while(pINFO.dwCursorPosition.Y < pINFO.srWindow.Bottom)
        {
            ConsolePrint(hOUT, " " ,wSize);
            pINFO.dwCursorPosition.Y = pINFO.dwCursorPosition.Y + 1;
        }
 
        if(bChange)
        {
            SetConsoleTextAttribute
            (
                hOUT, 
                FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY |
                wCOLOR 
            );
            bChange = FALSE;
        }
        
        if(bChange = ParseVirtualKey(VK_NUMPAD0))
            wCOLOR = BLK;
        else
        if(bChange = ParseVirtualKey(VK_NUMPAD1))
            wCOLOR = RED;
        else
        if(bChange = ParseVirtualKey(VK_NUMPAD2))
            wCOLOR = GRN;
        else
        if(bChange = ParseVirtualKey(VK_NUMPAD3))
            wCOLOR = BLU;
        else
        if(bChange = ParseVirtualKey(VK_NUMPAD4))
            wCOLOR = WHT;
        else
        if(bExit = ParseVirtualKey(VK_ESCAPE))
            WriteConsole(hOUT,"ESCAPE - PROGRAM CLOSE\n",80,NULL,NULL);
 
        Sleep(10);
    }
    return 0;
}
Миниатюры
Предоставить пользователю возможность выбрать цвет фона и текста в консоле  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2012, 22:17     Предоставить пользователю возможность выбрать цвет фона и текста в консоле
Еще ссылки по теме:

Предоставить пользователю цвет фона и текста C++
Размер и цвет текста в консоле C++
C++ Изменение цвета букв и фона в консоле

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

Или воспользуйтесь поиском по форуму:
Богдан Корниено
 Аватар для Богдан Корниено
9 / 9 / 1
Регистрация: 24.03.2011
Сообщений: 152
04.08.2012, 22:17     Предоставить пользователю возможность выбрать цвет фона и текста в консоле #12
9iroslav, А вы функции уже проходили?
Yandex
Объявления
04.08.2012, 22:17     Предоставить пользователю возможность выбрать цвет фона и текста в консоле
Ответ Создать тему
Опции темы

Текущее время: 07:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru