Etwas mit cout geschriebenes doch nicht schreiben (Begründung inside)
-
Hallo!
Ich programier' grad' an 'nem rein konsolenbasierten Spiel.
Angefangen hab' ich das unter Linux aber da einige Leute, denen ich davon erzählt habe doch recht interessiert waren und sich nicht mit irgendwelchen Cygwins und VMs rumschlagen wollten, hab' ich mich nun rangesetzt, das zu portieren.Das größte Problem hierbei sind die Farben.
Erst hatte ich sie in der Windows-Variante einfach weggelassen aber sie enthalten einfach zu viele wichtige Informationen.
Mittlerweile bin ich soweit, dass das Ganze dank "SetConsoleTextAttribute" weitestgehend farbig funktioniert nur hab' ich nun ein Problem:
Ich benutze mitunter Ausgaben, wo in einer Zeile mehrere Farbwechsel stattfinden.
Unter Linux mit den Escape-Sequenzen kein Problem.
Unter Windows jedoch, kann ich pro "cout" nur eine Farbe verwenden.Hab' ich halt die Ausgaben zerhackt und auf mehrere Ausgaben verteilt aber dann tauchte dies hier auf:
szDamagecomposition=GetColorByStat(3)+szOf2+GetColorByStat(0)+"/"+GetColorByStat(3)+szOf+GetColorByStat(0)+" ";
Dieser String wird je nach Vorraussetzungen noch erweitert oder auch wieder gelöscht.
Wenn ich ihn nun durch
cout <<GetColorByStat(3)<<szOf2;
cout <<GetColorByStat(0)<<"/";
cout <<GetColorByStat(3)<<szOf;
cout <<GetColorByStat(0)<<" ";
ersetze (GetColorByStat liefert unter Linux die Escape-Sequenz für die Farbe und unter Windows nur "" zurück wobei via SetConsoleTextAttribute die Farbe geändert wird), dann brauche ich die Möglichkeit das nach cout ge<<te wieder da rauszukriegen, ohne dass es ausgegeben wird...Kann mir da jemand helfen?
Edit: Hab's jetzt ganz anders gelöst.
-
bau dir ein eigenes cout, das steuerzeichen interpretieren kann.