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
Antwort
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.
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? –
@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
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. –
- 1. Wie lösche ich die std :: queue effizient?
- 2. Wie lösche ich einen Edelsteinpfad?
- 3. Wie lösche ich einen Verfügbarkeitssatz?
- 4. Wie lösche ich einen Kontakt?
- 5. Wie lösche ich einen Cookie?
- 6. Wie entlade ich einen UITabBarController, wenn ich einen UINavigationController lösche?
- 7. Wie lösche ich einen Arbeitsbereich in Eclipse?
- 8. Wie lösche ich einen bestehenden http-Server?
- 9. Wie lösche ich einen Benutzer in AngularJS?
- 10. Wie lösche ich einen Datensatz von ORMLITE?
- 11. Wie lösche ich einen Zweig von GitHub?
- 12. Wie lösche ich einen Beitrag in hexo
- 13. java.util.ConcurrentModificationException - Wie lösche ich einen Iterator
- 14. Wie lösche ich einen Cert-Mapping-Eintrag?
- 15. Wie lösche ich einen Datenrahmen mit BigR?
- 16. In Django, wie lösche ich einen Sessionkey?
- 17. Wie lösche ich einen Benutzer in Phabricator
- 18. Wie lösche ich einen Django JWT Token?
- 19. Wie lösche ich einen Puffer in Assembly?
- 20. UINavigationController: Wie lösche ich einen Blick auf einen Stapel
- 21. Wie effizient Text in WPF auf Bildschirm screenen?
- 22. Wie zeichne effizient genau N Punkte auf dem Bildschirm?
- 23. Wie lösche ich JTextArea?
- 24. Wie lösche ich Interzeptoren?
- 25. einen Javascript-Array effizient
- 26. Wie lösche ich die Befehlszeile in Octave?
- 27. Wie lösche ich den Standardkonstruktor?
- 28. Wie kann ich einen Namen für einen Bildschirm vergeben?
- 29. Wie lösche ich eine Flaschensitzung?
- 30. Wie wähle ich einen zufälligen Datensatz effizient in MySQL?
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. –