Couleur en C

Signaler
Messages postés
11
Date d'inscription
mardi 20 avril 2021
Statut
Membre
Dernière intervention
1 mai 2021
-
Messages postés
5512
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
3 mai 2021
-
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

Messages postés
5512
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
3 mai 2021
933
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
Messages postés
11
Date d'inscription
mardi 20 avril 2021
Statut
Membre
Dernière intervention
1 mai 2021

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 ?
Messages postés
5512
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
3 mai 2021
933 >
Messages postés
11
Date d'inscription
mardi 20 avril 2021
Statut
Membre
Dernière intervention
1 mai 2021

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);
}
Messages postés
11
Date d'inscription
mardi 20 avril 2021
Statut
Membre
Dernière intervention
1 mai 2021

Merci beaucoup, je vais essayer comme ça.
Non effectivement c'est une fonction qui n'est disponible que dans la bibliothèque <windows.h>.