Farbe gezielt einsetzen mit printf



  • hallo,

    ich würde hier nicht reinschreiben wenn ich nicht wirklich verzweifelt wäre. seit 2 tagen durchforste ich nun schon das netz auf der suche nach der antwort ob es möglich ist mit benutzung von printf gezielt farben einzusetzen. ich habe auch schon ausgiebig die FAQ und diverse links studiert, leider ohne erfolg.

    der hindergrund:

    vor drei tagen kam mir die idee das spiel tictactoe zu programmieren(noch anfänger) was auch so ganz gut geklappt hat. nun hab ich mir aber gedacht, dass ich doch die X-zeichen des einen spielers rot und die O-zeichen des anderen spielers blau darstellen könnte.

    kleiner ausschnitt:

    printf("\ncount: %d\n", counter);
    	printf("x-Koordinate: %d\n", x);
    	printf("y-Koordinate: %d\n", y);
    	printf("\n\n\n\n\n");
    	printf("\n");
    	printf(" %c  %c  %c \n", s7, s8, s9);
    	printf("\n");
    	printf(" %c  %c  %c \n", s4, s5, s6);
    	printf("\n");
    	printf(" %c  %c  %c \n", s1, s2, s3);
    	printf("\n");
    	printf("");
    	printf("\nMit Escape beenden!");
    

    wie man sehen kann habe ich die kästchen 1-9 mit den variablen s1-s9 benannt.
    das programm lässt sich auch mit den pfeiltasten steuern und mit enter erfolgt die eingabe.

    gibt es die möglichkeit "dem programm zu sagen" wenn z.b. der variablen s5 der wert 'X' zugewiesen wird dann soll der werd der variablen s5 rot dargestellt werden.

    ich programmiere(bzw. versuche es 🙄 ) in visual c++ 6.0 falls das von bedeutung ist.

    ich kenne die system("color xy") und SetConsoleTextAttribute-befehle, mir ist aber leider nicht klar wie ich mit diesen mein vorhaben verwirklichen kann
    ...

    nachtrag:

    wir beginnen im studium gerade mit C deshalb benutze ich den printf-befehl



  • Ja ist es. Wenn ihr im Hintergrund auch C++ einsetzen dürft: http://ic.sidewindershome.net bietet alles was du benötigst.

    Muss alles in C geschrieben sein schau dir von der Imprvoed Console (siehe Link oben) die ic.cpp-Datei an (Unter Downloads) und dann genauer den Inhalt der setTextColor()-Funktion.

    ===SCHNIPP===

    ich kenne die system("color xy") und SetConsoleTextAttribute-befehle, mir ist aber leider nicht klar wie ich mit diesen mein vorhaben verwirklichen kann

    Ah da haben wir ja schon das Richtige. SetConsoleTextAttribute() ist das was du suchst. Genauere Infos findest du zu der Funktion in der MSDN 🙂

    MfG SideWinder



  • danke erstmal das du so schnell geantwortet hast. damit hätte ich nicht gerechnet.
    mein problem ist, wenn ich den SetConsoleTextAttribute-Befehl nehme, dann färbt es bei mir gleich das ganze fenster ein und das ist ja nicht mein ziel. Es wäre mir recht, wenn ich es schaffen könnte farben wie oben beschrieben zuzuweisen.

    noch ein kleiner tipp in die richtige richtung wäre nett 😃 .
    (Ne klare antwort auf meine frage wäre natürlich auch schön :p )



  • lasst die anfänger nur lange genug mit ihren problemen alleine und sie kommen selber aufs ergebnis 😉 .
    das programm ist jetzt zwar doppelt so lange wie vorher aber das problem ist gelöst.

    habe erst farben vordefiniert:

    #define FRED   SetConsoleTextAttribute(hStdout, FOREGROUND_RED | FOREGROUND_INTENSITY)
    

    und dann mit if anweisungen ausgewählt:

    if((s7!='X') && (s7!='O')) //s7 Definition
    	{			
    		FWHITE; 
    		printf(" %c ", s7);
    	}
    	if(s7=='X') 
    	{	
    		FRED;
    		printf(" %c ", s7);
    	}
    	if(s7=='O') 
    	{	
    		FBLUE;
    		printf(" %c ", s7);;
    	}
    

    ich bin mir sicher es gibt noch nen einfacheren weg. wenn ja dann wäre es nett wenn mir den einer sagt.

    ansonsten bleibt nurnoch zu sagen:

    Ein kleiner Schritt für die Menschheit, aber ein großer Schritt für den Rille :p



  • Rille schrieb:

    ich bin mir sicher es gibt noch nen einfacheren weg

    Und ich bin mir sicher: Es gibt keinen einfacheren Weg...



  • na dann bedank ich mich für die hilfe



  • ältere c-compiler nutzten für farbige darstellung cprintf().

    mfg f.-th.



  • Das wäre mir jetzt neu...
    Vor langer, langer Zeit hat man Esc-Sequenzen verwendet um farbe auf den Bildschirm zu bringen... (wird teilweise heute noch verwendet...)
    Siehe: http://www.dee.ufcg.edu.br/~rrbrandt/tools/ansi.html



  • Jochen Kalmbach schrieb:

    Das wäre mir jetzt neu...
    Vor langer, langer Zeit hat man Esc-Sequenzen verwendet um farbe auf den Bildschirm zu bringen... (wird teilweise heute noch verwendet...)
    Siehe: http://www.dee.ufcg.edu.br/~rrbrandt/tools/ansi.html

    Siehe FAQ, das wird unter neueren Win-Versionen nix mehr.

    MfG SideWinder



  • Hab ich das je behauptet?



  • "wird teilweise heute noch verwendet" klingt nach "funktioniert mit deinem rechner auch, ist halt veraltet", naja Missverständnis.

    MfG SideWinder



  • Ich wollte eher sagen: heute soll es auch noch Großrechner geben die Text-Terminals haben (bei uns in der Firma gibt es sochle 20 Jahre alten Kisten noch; und sie werden tatsächlich noch produktiv genutzt (die Firma hat den Umstieg auf SAP noch nicht geschafft))...



  • SideWinder: Falls du Moderator im Win32-Forum sein solltest (oder jemand kennst der das ist), hier nur ein kleiner Hinweis:
    Die Überschrift über dem Forum:

    Bevor du hier postest:
    Schau bitte vorher in die FAQ und informiere dich in der MSDN Library. Oft nützlich ist auch eine Suche in den bisherigen Beiträgen
    Sehr hilfreich ist außerdem der Download des Platform SDK (Web Install | Full Download | ISO Install).

    Sollte etwas angepasst werden, damit Benutzer von VC6 nicht die aktuelle Version sondern die February 2003 runterladen (da sonst einige LIBs nicht mehr gelinkt werden können)...



  • Ich gebs an die Zuständigen weiter 🙂

    MfG SideWinder



  • @Jochen Kalmbach: Hast du zufällig gerade noch den passenden Link da?





  • Hab den Link noch mit hinzugefügt - vielen Dank!


Anmelden zum Antworten