Kolorowanie tekstu

0

Siema niedawno napisałem program w Code::Blocks 10.08

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

int main(){
HANDLE  dosHandleOut;
dosHandleOut = GetStdHandle (STD_OUTPUT_HANDLE);
char wyraz[21];
cout<<"Podaj nazwe koloru:";
cin>>wyraz;
if( wyraz == "bialy" ){
SetConsoleTextAttribute(dosHandleOut,BACKGROUND_WHITE | FOREGROUND_BLACK);
cout<<"bialy";
getch();
}

if( wyraz == "zolty" ){
SetConsoleTextAttribute(dosHandleOut,BACKGROUND_YELLOW | FOREGROUND_BLACK);
cout<<"zolty";
getch();
}

if( wyraz == "czerwony" ){
SetConsoleTextAttribute(dosHandleOut,BACKGROUND_RED | FOREGROUND_BLACK);
cout<<"czerwony";
              getch();
}

if( wyraz == "rozowy" ){
SetConsoleTextAttribute(dosHandleOut,BACKGROUND_MAGENTA | FOREGROUND_DARKGRAY);
cout<<"rozowy";
            getch();
}

if(wyraz == "turkusowy"){
SetConsoleTextAttribute(dosHandleOut,BACKGROUND_CYAN | FOREGROUND_DARKGRAY);
cout<<"turkusowy";
               getch();
}

if(wyraz == "zielony"){
SetConsoleTextAttribute(dosHandleOut,BACKGROUND_GREEN | FOREGROUND_LIGHTGRAY);
cout<<"zielony";
               getch();
}

if(wyraz == "niebieski"){
SetConsoleTextAttribute(dosHandleOut,BACKGROUND_BLUE | FOREGROUND_LIGHTGRAY);
cout<<"niebieski";
               getch();
}

if(wyraz == "brazowy"){
SetConsoleTextAttribute(dosHandleOut,BACKGROUND_BROWN | FOREGROUND_LIGHTGRAY);
cout<<"brazowy";
               getch();
}
getch();
}

 

NS projekt nie kompiluje sie :(.Co zrobiłem nie tak? Prosze o szybką odpowiedź.

1

Używasz

getch()

, ale nie dodałeś biblioteki conio.h

, z której ta funkcja pochodzi. To po pierwsze...
1

Straszny bezsens - używanie bezpośrednich komend WinApi do kontroli konsoli razem z getch().

0

Pozamieniaj getch() na getchar(). Getchar() jest pewniejsze, a poza tym do getch() potrzebujesz biblioteki conio.h. Co do kolorów to nie jestem pewien, ale chyba niektórych nie da się łączyć ze sobą, np. RED nie połączysz z BLACK, ale RED z BLUE już tak. Poczekaj jeszcze na odpowiedzi lepszych niż ja. pozdr:)

0

To jak mam pokolorować tło czcionki w konsoli i czy powinienem korzystać z Code::Blocks

1

Powinieneś zacząć od rzeczy prostych, kolorowane nie jest natywną częścią języka C++.
Ale skoro już chcesz:

#include <iostream>
#include <iomanip>
#include <windows.h>
#include <wincon.h>
using namespace std;
 
int main()
  {
   HANDLE dosHandleOut=GetStdHandle(STD_OUTPUT_HANDLE);
   struct { char *name; unsigned attr; } Tb[]=
     {
      {"czerwony",BACKGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY },
      {"zielony",BACKGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY },
      {"niebieski",BACKGROUND_BLUE | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY },
     };
   const unsigned TbSize=sizeof(Tb)/sizeof(*Tb);
   while(true)
     {
      cout<<"Podaj nazwe koloru (ewentualnie wpisz - koniec): ";
      char name[21];
      cin>>setw(sizeof(name)-1)>>name;
      if(!strcmp(name,"koniec")) break;
      unsigned i;
      for(i=0;i<TbSize;++i)
        {
         if(!strcmp(Tb[i].name,name))
           {
            SetConsoleTextAttribute(dosHandleOut,Tb[i].attr);
            cout<<name<<endl;
            SetConsoleTextAttribute(dosHandleOut,FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
            break;
           }
        }
      if(i>=TbSize) cout<<"Nieznany kolor"<<endl;
      cout<<endl;
     }
   return 0;
  }

Do tabelki dopisujesz kolejne wiersze i więcej nić nie trzeba zmieniać, tylko ponownie skompilować.

0

No dobra, wszystko ok tylko czy można mieć więcej kolorów?

0

Nie pomogłeś mi,chodzi mi kolor tła(Czy oprócz czerwonego,zielonego,niebieskiego da się uzyskać inne kolory?)?
Proszę o szybką odpowiedź.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.