Hallo,
also, das Flackern kommt nicht von mangelnder Rechenkraft.
Wir müssen erst mal an der Stelle unterscheiden, wann du in dein Fenster zeichnest und wann Windows das Fenster auf den Bildschirm zeichnet.
Wenn du mit System("cls") den Inhalt von deinem Fenster löscht, dann zeichnet Windows ein schwarzes Fenster auf den Bildschirm. Anschließend malst du deine Straße, Spieler und Hindernisse (hoffentlich
. Dieses kurze Darstellen der gelöscheten Bildschirms ist dein Flackern und das gilt es zu verhindern.
Normalerweise löst man es so, dass auf einen nicht sichtbaren Bildschirm gezeichnet wird (der ist nur im Ram vorhanden). Erst nach Abschluss des Zeichnens wird der gesamte Bereich umgeschaltet und das Endbild ist zu sehen. Such mal nach Double Buffering. (habs nur vereinfacht dargestellt).
In deinem Fall arbeitest du mit der Konsole. Die ist ein wenig ein Sonderfall wenn du die normale Ausgabe mit std::cout odfer printf machst. In diesem Fall must du verhindern, dass Windows deine gelöschte Konsole auch wirklich zeichnet und so das Flackern kommt. Das macht LockWindowUpdate()
Also, ich weiß ja nicht, wann du zeichnest. Üblicherweise macht man das an einer einzigen Stelle im Programm und nicht verteilt. Dann kommt die schon genannte Reihenfolge zum Tragen.
Also
|
Quellcode
|
1
2
3
4
5
6
|
LockWindowUpdate(GetConsoleWindow());
System("cls");
// Code für Straße, Spieler, Hindernisse und sonstiges zeichnen
LockWindowUpdate(NULL);
|
Das verhindert, dass Windows die Konsole auf dem Bildschirm neu zeichnet, wärend du dein Bild "malst".
PS: Wenn ihr euer Spiel verbessern wollt und nebenbei noch ein wenig eure Fertigkeiten ausbauen wollt, dann schau doch dir doch mal das hier an:
https://www.c-plusplus.net/code/ic/ Die Doku dazu sollte komplett in deutsch sein.
PPS: Wenn du magst, dann gebt doch den Source Code auf deiner Webseite frei. Dann können auch andere mal drüber schauen.
Grüße.
EDIT: mann, einmal den Beitrag fertig schreiben... Braucht natürlich windows.h