Colors help please!

Hey everyone. I started programming about 5 days ago so I'm very newbish at this, but I wanted to try and make a simple console program that changed text and background colour to the colour the user inputs. I got the text colour to change and it works, but how do I get the background colour to change without specifying a text colour? I'm using <stdlib.h> as library and the command I'm using is system("color"); Is there a way to tell the system that I want to change the background colour but NOT change the text colour? Because currently the only way I can change the background colour is if I input a text colour along with it, like system("color 1c"); Is there like a special word/letter that says "keep the letter the colour it is but change the background colour only" or vice versa? Many thanks! :)

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
#include <iostream>
#include <Windows.h>
#include <stdlib.h>
#include <string>
#include <string.h>
using namespace std;

/* Background colours:		Foregorund colours:
	0 = Black				8 = Gray
	1 = Blue				9 = Light Blue
	2 = Green				A = Light Green
	3 = Aqua				B = Light Aqua
	4 = Red				C = Light Red
	5 = Purple			D = Light Purple
	6 = Yellow			E = Light Yellow
	7 = White				F = Bright White
*/

// Questa funzione di tipo void colora il testo in base alla rispota dell'utente
int coloretesto(char a)
{
	switch (a)
	{
	case '1': system("color 8"); break;
	case '2': system("color 9"); break;
	case '3': system("color a"); break;
	case '4': system("color b"); break;
	case '5': system("color c"); break;
	case '6': system("color d"); break;
	case '7': system("color e"); break;
	case '8': system("color f"); break;
	}
	return a;
}

int coloresfondo(char a)
{
	switch (a)
	{
	case '1': system("color nullc"); break;
	}
	return a;
}

// Questa funzione di tipo void colora lo sfondo in base alla rispota dell'utente

// Questo programma chiede l'input all'utente per il cambio del colore del testo e dello sfondo della console

int main()
{
	// Dichiarazione caratteri t(testo) e s(sfondo) e stringa risposta
	char t, s;
	string risposta;
	// Richiesta dell'input per il colore del testo
restart:
	cout << "Ciao! Di che colore vorresti il testo? " << endl;
	// Colori disponibili da scegliere per il testo
	cout << "1. Grigio\n2. Blu\n3. Verde Chiaro\n4. Celeste\n5. Rosso Chiaro\n6. Viola Chiaro\n7. Giallo Chiaro\n8. Bianco\n";
	// Input per il colore del testo
	cin >> t;
	// Funzione colore testo
	coloretesto(t);
	// Svuotamento console
	system("cls");
	// Richiesta dell'input per il colore dello sfondo
	cout << "Bella scelta! Invece di che colore vorresti lo sfondo?" << endl;
	// Colori disponibili da scegliere per lo sfondo
	cout << "1. Blu\n2. Verde\n3. Acqua\n4. Rosso\n5. Viola\n6. Giallo\n7. Bianco\n8. Nero\n";
	// Input per il colore dello sfondo
	cin >> s;
	// Funzione colore sfondo
	coloresfondo(s);
	coloretesto(t);
	// Svuotamento console
	system("cls");
	// Fine e richiesta di ricominciare da capo con ciclo while per evitare risposta sbagliata
	while (risposta != "si" || risposta != "Si")
	{
		system("cls");
		cout << "Tutto fatto! Vorresti scegliere altri colori? (Si/No)\n";
		getline(cin, risposta);

		if (risposta == "si" || risposta == "Si")
		{
			system("cls");
			goto restart;
		}
		else if (risposta == "no" || risposta == "No")
			break;
	}
	// Pausa console
	return 0;
}
Last edited on

this may help:

http://www.cplusplus.com/forum/beginner/52844/



Thanks but I already know how to change the font colour like that, I just chose not to because it only has 3 colours (blue, red and green) and it's way more complicated than a simple system("color").
Essentially you'll see that if you set the color anywhere between 0 and 15 (0x00 and 0x0f), then you are changing the text color. If you enter a colour anywhere between 16 and 31, you will have the same text colors, but with a different background.


2nd post by stewbond
ah missed that, thanks! :)
Topic archived. No new replies allowed.