Couleur en C

Fermé
Pepithrow Messages postés 14 Date d'inscription mardi 20 avril 2021 Statut Membre Dernière intervention 28 juillet 2021 - Modifié le 30 avril 2021 à 20:44
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 3 mai 2021 à 02:04
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 1 mai 2021 à 19:56
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 14 Date d'inscription mardi 20 avril 2021 Statut Membre Dernière intervention 28 juillet 2021
Modifié le 1 mai 2021 à 21:05
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083 > Pepithrow Messages postés 14 Date d'inscription mardi 20 avril 2021 Statut Membre Dernière intervention 28 juillet 2021
3 mai 2021 à 02:04
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 14 Date d'inscription mardi 20 avril 2021 Statut Membre Dernière intervention 28 juillet 2021
1 mai 2021 à 20:52
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