[c++] Couleurs de la console

Résolu
Astrofan -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour tout le monde!!

Malgré les multiples conseils que j'ai vus sur ce site, je ne comprends toujours pas comment mettre dans mon programme en C++ un fond bleu clair et des lettres rouges!!

Quelqu'un pourrait m'expliquer plus en détail??

Merci parce que là...je suis paumé!!

Je suis en train de créer un programme d'électrotechnique qui permet de calculer automatiquement les formules!!

Merci d'avance!

Bonne Année!!

16 réponses

maxius
 
salut la couleur en mode console rien de plus simple on peu changer en meme temps la couleur du texte que celle du background de la console avec la fonction
system("color £#) où £ represente la couleur du texte et # la couleur de fond de la console voici les differentes correspondances pour les couleurs :
0 = Noir B=Cyan
1 = bleu foncé C=rouge
2 = vert D=rose
3 = bleu-gris E=jaune
4 = Marron F=blanc
5 = pourpre
6 = kaki
7 = gris clair
8 = Gris
9 = Bleu-clair
A = vert-clair

EXEMPLE D'APPLICATION: ecrire C++ qui affiche BONJOUR FORUM COMMENTCAMARCHE en bleu dans une console de couleur rose

RESOLUTION DE L'EXEMPLE D'APPLICATION:

#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
system("color 1d");
cout<<"BONJOUR FORUM COMMENTCAMARCHE"<<endl;
return 0;
}


J'espere que ceci vous aidera!
amitié------fraternité-----respect
esprit de recherche et d'innovation
4
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Tu mélanges le c++ et le c. Et sous windows il vaut mieux utiliser l'api que la fonction system.
0
mattvi
 
merci
0
Utilisateur anonyme
 
Meci!!!
0
mehdi the geek
 
mercii bcp
0
Synyster
 
afin de mettre un fond bleu et des lettres rouges il faut inclure conio2.h
tools->check for updates/packages
tu met le devpack server a devpacks.org ...
tu verras une liste de librairies apparaitre
tu trouveras un conio tu le telecharge

puis dans ton projet tu ajoute les linkers
project options -> parametres
-conio2
../lib/libconio.a

j'ai deja essayé et ça marche ;)
2
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Oui, on n'en doute pas que ça marche.
Mais on a dit que conio, ce n'est pas portable !!!

Il vaut donc mieux utiliser Ncurses.
0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 
Merci fiddy tu m'ôtes les mots de la bouche :-)
0
MY
 
###########EH REGARDE ICI##########
Utilise la fonction system(color ##), et a la place des diézes tu entre un caractere de cette liste
0=noir 1=bleu foncé 2=vert 3=bleu gris 4=marron 5=pourpre 6=kaki 7=gris claire 8=gris 9=bleu claire B=cyan C=rouge D=rose E=jaune F=blanc

le premier chiffre correspond a l'arriére plan (exemple: system(color F#); le fond est blanc) et le second chiffre correspond au texte donc system (color E2); il y aura un fond jaune et du texte vert ATTENTION ne pas mettre de virgule entre les 2 argument et ne pas oublier le point virgule

ALLER BY ^^
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
@MY,
Pas besoin de mettre des dièses pour mettre en évidence ton commentaire...
De plus, system est une fonction à éviter pour deux raisons : fonction pas efficace, on préférera utiliser une API (déjà évoquée dans un post ci-dessus), et ta méthode n'est pas portable : il vaut mieux utiliser une bibliothèque (également déjà évoquée).
Cdlt,
0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 
Euh comment ça ?
C'est un programme qui se lance dans une fenêtre et tu voudrais changer des couleurs ? Ou il se lance dans une console ?
0
astrofan
 
oui c'est un programme en mode console car je ne sais encore faire le mode fenêtre!!

sais-tu comment faire??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 
A priori il faut utiliser la librairie ncurses.

bonne chance
0
Antoine
 
ncurse fonctionne très bien et est très facile à utiliser. ncurse t'offre d'autres passibilités comme redimensionner la console, créer des cadres, écrire à des coordonnées spécifiques...
Il y a aussi termios, mais je n'a jamais essayé.
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
Salut,

Pas besoin de ncurses, c'est une histoire de caractères spéciaux à afficher dans la console.
Voici un tutorial là dessus:
https://openclassrooms.com/fr/courses
0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 
Oui mais a priori ca va dépendre de ton shell. Typiquement la tu donns les séquences d'échappement en bash (sous linux) alors qu'astrofan veut faire ça sous windows. L'avantage c'est qu'en ncurses tu dois pouvoir être indépendant du type du shell et au moins de l'OS. Et pourtant si tu installes cygwin on voit qu'il est possible d'avoir des couleurs dans la fenêtre "commandes msdos" ! Mais rien ne dit que ce sont les mêmes séquences d'échappement.

Bonne chance
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
Ah oui tu as raison, j'avais pas pris en compte la portabilité...
0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 
Pas de soucis :-)
0
Med from Sfax
 
Salut
Voici un morceau de code qui résoudra le probleme de couleur
#include<widows.h>
#include<stdio.h>
int main()
{
HANDLE manip_console=GETSTDHANDLE(STD_OUTPUT_HANDLE);
int couleur1,couleur2;
SetConsoleTextAttribute(manip_console,couleur1|couleur2);
printf("Un texte d'essai\n ");
return 0;
}
et le tour est joué
bon couleur1 et couleur 2 c'est pour le fond et le texte

ou bien t'as qu'à ,telecharger econio.h et econio.cpp
Ciao
0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 
Sauf que ça ne marchera que sous windows ;)
0
Skami 18
 
Et Windows, c'est mal.
0
EtiN Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   7
 
ça c'est vrai. (linux powaa)
0
Antoine
 
Et windows c'est très bien fait, et ça constitue la large majorité des ordinateurs.
0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 
Sauf que ce n'est pas la question. Quand on peut faire un truc qui marche partout et un truc qui marche à certains endroit à coût équivalent, pourquoi ne pas choisir l'approche universelle ?
0
curite Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   13
 
Bonjours, tu n'a qu'a regarder ici https://openclassrooms.com/fr/courses c'est en c mais c'est facilement adaptable.
0
Etn3000
 
lien mort. dommage c'était un bon tuto
0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 
Effectivement il ne reste que la partie linux :
http://www.siteduzero.com/tutoriel-3-35298-des-couleurs-dans-la-console-linux.html

... raison de plus pour passer par une librairie ;-)
0
BaptisteM71
 
Pourquoi, il à supprimé le lien???
J'en ai besoin!
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
J'aime pas trop déterrer les vieux sujets, mais lorsque je fais des recherches sur Ncurses, le système supporté est POSIX, alors comment l'utiliser sous Windows ?

Note : moi je voudrais juste changer la couleur du texte et du fond d'écran de la console dans un projet C++/OpenGL/GLUT, de préférence portable, mais au minimum Windows.
0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 
En cherchant un tout petit peu sur google "libncurses windows" on trouve ceci :
https://en.wikipedia.org/wiki/Ncurses

qui mène ici :
http://gnuwin32.sourceforge.net/packages/ncurses.htm

Et voilà ;-)
0
morgane
 
Bonjour j'ai lu toutes vos réponses mais beaucoup de vos liens sont morts ( je sais j'arrive tard après la bataille ) j'ai le même soucis sous windows j'aimerais changer la couleur du texte dans la console mais seulement partiellement , juste sur quelques mots qui doivent s'afficher en bleu, savez vous comment faire ?
Avec vos conseils j'ai réussi à afficher tout le terminal en bleu, mais pas juste les mots qui m'intéressaient:/
merci d'avance
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Le lien pour pdcurses n'est pas mort.
De plus, il y a un post qui donne un bout de code sans lien (post #8).

Je t'invite donc à relire tout le fil, et tu trouveras la réponses à tes questions. N'hésite pas à ouvrir un nouveau post si tu n'y arrives pas.
0
morgane > fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
j'ai bien relu tout le fil , mais je ne vois pas de conseil permettant de mettre en couleur seulement une partie du terminal et non le terminal en entier , j'ai vraiment besoin d'afficher seulement une partie d'une chaine de caractère en bleu et non toute la console, si vous savez faire ça ou si vous connaissez un bon tutoriel je suis preneuse !
merci beaucoup
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846 > morgane
 
Et ça, ça ne te convient pas : https://openclassrooms.com/courses/des-couleurs-dans-la-console-linux ?
0
morgane
 
non parce que déjà c'est en c et que je n'ai aucune connaissance de ce langage pour le traduire et le tuto pour Windows de cette page est mort et je cherche les deux versions, celle linux et celle Windows (car actuellement je code sous Windows mais le programme final doit tourner sous linux ).
J'ai regardé ce lien, quand je dis que j'ai tout lu je ne mens pas , pas besoin d'être agressif, j'ai un soucis , je demande de l'aide et si personne ne peut m'aider ici ce n'est pas grave, je demanderai ailleurs :)
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Ce n'était pas un ton agressif, rassure-toi ;-).

Sinon, oui le post était en C. Pour le C++, tu as juste à remplacer printf("...") par std::cout << "..."; et remplacer stdio.h par iostream.

Dans ton cas (portabilité sur windows et GNU/Linux), le seul moyen est l'utilisation d'une bibliothèque tierce. Ncurses par exemple. Un tuto : https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/
Note : il me semble un peu vieux le tuto. Mais en même temps, c'est pas tout neuf cette bibliothèque. Si tu veux plus de modernité, il faudra passer sur une bibliothèque à fenêtre comme Qt, GTK2+.
0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 
Outre le fait qu'on a dit que conio ne permettait pas d'avoir un programme portable (qui fonctionne sous windows, linux...) contrairement à un programme basé sur la librairie ncurses, ce programme comporte un certain nombre de fautes (dont l'inclusion #include <windows.h>).
https://en.wikipedia.org/wiki/Ncurses

Donc merci de prendre 2 minutes la prochaine fois pour lire ce qui a été écrit auparavant.
-1
mathieu
 
Voici mon code sur code::block en c++ profiter bien :D


#include <iostream>
#include <stdlib.h>
using namespace std;

int main()
{
system("COLOR 1");
cout << "Bonjour Mon ptit vieux" << endl;
system("COLOR 2");
cout << "comment sava ?" << endl;
system("COLOR 3");
cout << "j'ai enfin reussi a mettre le texte en couleur!" << endl;
system("COLOR 4");
cout << "c'est une grande chose ? non ?" << endl;
system("COLOR 5");
cout << "aller travaille bien Michou" << endl;
system("COLOR 6");
cout << "bye" << endl;
system("COLOR 7");
cout << "bye" << endl;
system("COLOR FC");
cout << "bye" << endl;
return 0;
}
-3
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
system("...") est déconseillé... Cf. le fil.
0