Couleur en C

Pepithrow Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, Bonsoir,
Je dois coder un jeu de société pour mon école, et j'aimerais ajouter de la couleur.
Lorsque je fais :
Color(7,0);
printf(""Hello world");
Color(15, 0);

Ca fonctionne très bien, mais je n'arrive pas à l'utiliser sur des constantes. En effet, j'ai posé
#define NONJOUABLE 'X', qui représente un rocher, et je n'arrive pas à faire en sorte que ce X soit gris.
Sinon je pourrais peut-être colorier la case de mon tableau en gris..? Reste à voir comment faire.
Et pour ceux qui me disent d'utiliser
textcolor(RED);
cprintf("Bonjour"); 

J'ai essayé, cela ne fonctionne pas. J'ai sûrement dû faire une erreur, mais bon.
Pour info, je travaille sur CodeBlocks.
Merci d'avance.

Configuration: Windows / Chrome 90.0.4430.93

2 réponses

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut Pepithrow,

En C, la ligne :

#define NONJOUABLE 'X'


définit une macro NONJOUABLE qui est remplacée par le préprocessseur par un char 'X' (un caractère entre deux apostrophes est un char.

pour afficher un char avec printf, tu fais ceci

printf("%c", NONJOUABLE);


SI ton
printf()
pour afficher
"Hello world"
donne bien un affichage coloré en utilisant la fonction
Color()
comme tu le dis, il n'y a pas de raisons que celui ci dessus le fasse pas de même.

Je ne connais pas de fonction
Color()
. Ce n'est pas une fonction standard du C. Elle vient d'où ?

Dal
0
Pepithrow Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir, j'aurais une autre question.
En fait cela ne règle pas vraiment mon problème.
En effet, j'ai un tableau de valeurs, et j'affecte par exemple a tab[0] la valeur NONJOUABLE
Donc lorsque j'affiche mon tableau, eh bien toutes les cases sont vides, sauf la 1e qui contient donc un X.
Et donc il faudrait que je printf cette case en particulier pour que le X devienne d'une certaine couleur ?
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105 > Pepithrow Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
Au lieu d'écrire tout le tableau à l'écran, tu n'as qu'à écrire les caractères un par un, et s'il y a un X, l'écrire de la bonne couleur, s'il y a autre chose, l'écrire d'une autre couleur que tu souhaites.

Sinon, tu peux écrire ta "grille" vide, puis positionner les X là où tu dois le faire aux coordonnées de l'écran que tu souhaites. Tu peux faire cela avec l'API Win32, que tu utilises déjà, avec la fonction SetConsoleCursorPosition().

Tu peux te faire une fonction comme ceci.

void gotoxy(int x, int y) {
  COORD coord;
  coord.X = x;
  coord.Y = y;
  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
0
Pepithrow Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup, je vais essayer comme ça.
Non effectivement c'est une fonction qui n'est disponible que dans la bibliothèque <windows.h>.
0