[C/C++] Konsole einzelnes Zeichen farbig

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Smokers, 21. Januar 2009 .

  1. 21. Januar 2009
    Konsole einzelnes Zeichen farbig

    also habe folgendes kleines Programm ^^


    Code:
    #include <cstdlib>
    #include <iostream>
    #include <string>
    
    
    using namespace std;
    int show_field();
    int give_top();
    int ask_field();
    int check_win();
    int check_free(int);
    
    int akt_player = 100;
    int winner = -10;
    char fields[3][3] = { {'1','2','3'},
     {'4','5','6'},
     {'7','8','9'} };
     
    std::string spieler1("-");
    std::string spieler2("-");
    
    
    int main(int argc, char *argv[])
    {
    
     //////////Programm start &copy by Smoki //////////
     printf("Test");
     
     give_top();
     do {
     if(spieler1 == "-") 
     {
     cout << "Bitte gib den Namen fuer Spieler 1 ein: "; cin >> spieler1; 
     }
     else 
     {
     cout << "Kein zulaessiger Name(Zu kurz?).Neue Eingabe :"; cin >> spieler1;
     }
     }
     while(spieler1.size() < 3);
     
     system("CLS");
     give_top(); 
     
     do {
     if(spieler2 == "-") 
     {
     cout << "Bitte gib den Namen fuer Spieler 2 ein: "; cin >> spieler2; 
     }
     else 
     {
     cout << "Kein zulaessiger Name(Zu kurz?).Neue Eingabe :"; cin >> spieler2;
     }
     }
     while(spieler2.size() < 3);
     
     system("CLS");
     give_top();
     
     show_field();
     
     do { 
     ask_field();
     system("CLS");
     give_top();
     show_field();
     }
     while(check_win() == false);
     
     if(winner == 1) {
     cout << "Herrzlichen Glueckwunsch " << spieler1 << ".Du hast gewonnen" << endl ;
     } 
     else {
     cout << "Herrzlichen Glueckwunsch " << spieler2 << ".Du hast gewonnen" << endl ;
     }
     cout << endl;
     system("PAUSE");
     return EXIT_SUCCESS;
     
    }
    
    
    int show_field() {
     cout << "+---+---+---+" << endl;
     cout << "| " << fields[0][0] <<" | " << fields[0][1] <<" | " << fields[0][2] <<" |" << endl;
     cout << "+---+---+---+" << endl;
     cout << "| " << fields[1][0] <<" | " << fields[1][1] <<" | " << fields[1][2] <<" |" << endl;
     cout << "+---+---+---+" << endl;
     cout << "| " << fields[2][0] <<" | " << fields[2][1] <<" | " << fields[2][2] <<" |" << endl; 
     cout << "+---+---+---+" << endl;
     cout << endl;
    }
    
    int give_top() {
     cout << "*******************************************" << endl;
     cout << "**** TicTacToe Master 0.1 beta by Smoki****" << endl;
     cout << "*******************************************" << endl;
     cout << endl;
     cout << endl;
    }
    
    int ask_field() {
     int modulo;
     int eingabe;
     modulo = akt_player%2;
     
     do {
     if(modulo == 0) {
     cout << spieler1 << ".Bitte waehle deine Position!" << endl;
     } 
     else {
     cout << spieler2 << ".Bitte waehle deine Position!" << endl;
     }
     cin >> eingabe;
     if(check_free(eingabe) == false) { cout << "Feld nicht mehr frei. Bitte neu waehlen!" << endl; }
     }
     while(eingabe < 0 || eingabe > 9 || check_free(eingabe) == false);
     
     switch(eingabe) {
     case 1: if(modulo == 0) { fields[0][0] = 'X'; } else { fields[0][0] = 'O'; }; break;
     case 2: if(modulo == 0) { fields[0][1] = 'X'; } else { fields[0][1] = 'O'; }; break;
     case 3: if(modulo == 0) { fields[0][2] = 'X'; } else { fields[0][2] = 'O'; }; break;
     case 4: if(modulo == 0) { fields[1][0] = 'X'; } else { fields[1][0] = 'O'; }; break;
     case 5: if(modulo == 0) { fields[1][1] = 'X'; } else { fields[1][1] = 'O'; }; break;
     case 6: if(modulo == 0) { fields[1][2] = 'X'; } else { fields[1][2] = 'O'; }; break;
     case 7: if(modulo == 0) { fields[2][0] = 'X'; } else { fields[2][0] = 'O'; }; break;
     case 8: if(modulo == 0) { fields[2][1] = 'X'; } else { fields[2][1] = 'O'; }; break;
     case 9: if(modulo == 0) { fields[2][2] = 'X'; } else { fields[2][2] = 'O'; }; break;
     }
     akt_player = akt_player -1;
    }
     
     
     
    int check_win(){
     if(
     (fields[0][0] == 'X' && fields[0][1] == 'X' && fields[0][2] == 'X') || 
     (fields[1][0] == 'X' && fields[1][1] == 'X' && fields[1][2] == 'X') || 
     (fields[2][0] == 'X' && fields[2][1] == 'X' && fields[2][2] == 'X') || 
     (fields[0][0] == 'X' && fields[1][0] == 'X' && fields[2][0] == 'X') || 
     (fields[0][1] == 'X' && fields[1][1] == 'X' && fields[2][1] == 'X') || 
     (fields[0][2] == 'X' && fields[1][2] == 'X' && fields[2][2] == 'X') || 
     (fields[0][0] == 'X' && fields[1][1] == 'X' && fields[2][2] == 'X') ||
     (fields[2][0] == 'X' && fields[1][1] == 'X' && fields[0][2] == 'X')
     ) { winner = 1; }
     
     if(
     (fields[0][0] == 'O' && fields[0][1] == 'O' && fields[0][2] == 'O') || 
     (fields[1][0] == 'O' && fields[1][1] == 'O' && fields[1][2] == 'O') || 
     (fields[2][0] == 'O' && fields[2][1] == 'O' && fields[2][2] == 'O') || 
     (fields[0][0] == 'O' && fields[1][0] == 'O' && fields[2][0] == 'O') || 
     (fields[0][1] == 'O' && fields[1][1] == 'O' && fields[2][1] == 'O') || 
     (fields[0][2] == 'O' && fields[1][2] == 'O' && fields[2][2] == 'O') || 
     (fields[0][0] == 'O' && fields[1][1] == 'O' && fields[2][2] == 'O') ||
     (fields[2][0] == 'O' && fields[1][1] == 'O' && fields[0][2] == 'O')
     ) { winner = 2; }
     
     if(winner == 1 || winner == 2) {
     return true;
     }
     else {
     return false;
     }
    }
    
    int check_free(int eingabe){
     switch(eingabe) {
     case 1: if(fields[0][0] == '1') {return true; } else { return false; }; break;
     case 2: if(fields[0][1] == '2') {return true; } else { return false; }; break;
     case 3: if(fields[0][2] == '3') {return true; } else { return false; }; break;
     case 4: if(fields[1][0] == '4') {return true; } else { return false; }; break;
     case 5: if(fields[1][1] == '5') {return true; } else { return false; }; break;
     case 6: if(fields[1][2] == '6') {return true; } else { return false; }; break;
     case 7: if(fields[2][0] == '7') {return true; } else { return false; }; break;
     case 8: if(fields[2][1] == '8') {return true; } else { return false; }; break;
     case 9: if(fields[2][2] == '9') {return true; } else { return false; }; break;
     }
    }
    
    Ich will nun das die vom user eingegebenen Zeichen ( X oder O ) nun in ROT drinne stehen...

    ist das möglich?

    habe bisher nur gefunden das die ganze Konsole sich färbt mittels SYSTEM befehl.....

    greets
     
  2. 21. Januar 2009
    AW: Konsole einzelnes Zeichen farbig

    wenn ichs richtig verstanden habe was du meinst ... das funkt über die conio.h: how to make colors | DaniWeb
     
  3. 21. Januar 2009
    AW: Konsole einzelnes Zeichen farbig

    weis ja nicht, aber ich hab mal conio.h eingebunden und folgendes probiert :
    Code:
    using namespace std;
    int show_field();
    int give_top();
    int ask_field();
    int check_win();
    int check_free(int);
    
    int akt_player = 100;
    int winner = -10;
    char fields[3][3] = { {'1','2','3'},
     {'4','5','6'},
     {'7','8','9'} };
     
    std::string spieler1("-");
    std::string spieler2("-");
    
    
    int main(int argc, char *argv[])
    {
    
     //////////Programm start &copy by Smoki //////////
     textcolor(12);
     printf("Test");
    
    ..............
    
    Dann bekomm ich halt Compiler error das er textcolor() nich kennt.

    // 27 H:\Cpp\Projekte\TicTacToe\main.cpp `textcolor' undeclared (first use this function) //
     
  4. 21. Januar 2009
    AW: Konsole einzelnes Zeichen farbig

    was du noch versuchen könntest wäre die farbe jedesmal pro spieler umzuschalten mittels system("COLOR XY");

    x= Hintergrund
    y= Vordergrund

    Werte:
    0= Schwarz
    1= Dunkelblau
    2= Dunkelgrün
    3= Blaugrün
    4= Dunkelrot
    5= Lila
    6= Ocker
    7= Hellgrau
    8= Dunkelgrau
    9= Blau
    A= Grün
    B= Zyan
    C= Rot
    D= Magenta
    E= Gelb
    F= Weiß
     
  5. 22. Januar 2009
    AW: Konsole einzelnes Zeichen farbig

    Hey,
    falls du das Programm für Windows schreibst kannst du auch das hier benutzen:
    SetConsoleTextAttribute function (Windows)

    Windows.h includieren

    und dann z.B.:
    Code:
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hConsole, FOREGROUND_RED);
    
    funktioniert bei mir einwandfrei... aber wie gesagt nur Windows

    //Edit:
    Du kannst die Farben so auch kombinieren z.B. für ein knalliges Rot:
    SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY);

    oder auch mehrere Farben miteinander

    MfG Moses
     
  6. 22. Januar 2009
    AW: Konsole einzelnes Zeichen farbig

    und falls du für linux schreiben willst, solltest du dir ncurses anschauen

    Ncurses – Wikibooks, Sammlung freier Lehr-, Sach- und Fachbücher
     
  7. 22. Januar 2009
    AW: Konsole einzelnes Zeichen farbig

    okay, danke erstmal soweit ich werds damit mal versuchen =) dank euch
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.