2017-04-23 4 views
0

Immer wenn ich versuche, ein Spiel oder etwas zu machen, das das schnelle Löschen eines Bildschirms erfordert, habe ich System ("CLS") verwendet. Ich weiß jetzt, dass das nicht gut zu verwenden ist, also habe ich versucht, eine for-Schleife zu verwenden, um neue Zeilen schnell zu drucken. Während das funktioniert, sieht es wirklich komisch und weniger klar aus. Ich habe Leute gesehen, die versucht haben, mit STRING einen Bildschirm zu löschen, aber wenn ich es versuche, funktioniert es nie. Wie kann ich meinen Bildschirm effizient und sauber löschen?Wie lösche ich einen Bildschirm effizient

+0

Ich habe gehört, es sollte schlecht sein, wenn auf Nicht-Windows-Plattformen oder etwas zu verwenden, also versuche ich nur, die Gewohnheit abzuschütteln. –

Antwort

0

Es gibt keine Standardmethode zum Löschen des Bildschirms. Aber auf jeden Fall wird das Löschen des Terminals und das Neuzeichnen für viele Spiele viel zu langsam und störend sein.

Sie sollten entweder die nativen Terminal-Funktionen Ihres Betriebssystems oder eine plattformübergreifende Bibliothek verwenden, die diese abstrahiert.
Ich würde ncurses empfehlen, die letztere ist. Es bietet im Grunde eine Schnittstelle, die einer doppelt gepufferten Grafik-API ähnlich ist, und behandelt das gesamte Terminal-Twiddling, so dass der Frame-Austausch so schnell wie möglich ist.

+0

Ich bin nur neu in C++, also mache ich nur grundlegende ASCII-Spiele und was nicht gerade, aber ich habe Leute gesehen, die etwas wie cout << string ("\ n", 100) benutzen; Ist das etwas, das du nicht mehr machen kannst, weil ich es nie zur Arbeit bringen kann? –

+0

@EthanJones, das einhundert Zeilenumbrüche druckt und den vorherigen Frame aus der Sicht scrollt (so ziemlich wie 'cls', eigentlich). Es funktioniert wie eine Technik, aber wie gesagt, es ist wirklich langsam. Die native Terminal-Handhabung ermöglicht Operationen wie "füge einfach ein großes" O "bei (8, 15) hinzu, und das macht das Update viel schneller. – Quentin

+0

Vielen Dank. Ich denke, ich werde wahrscheinlich Wege finden, es zu tun, wenn ich richtig mit der Grafik arbeite, aber bis dahin, danke ich werde in ncurses schauen. –

Verwandte Themen