Also, ich mache ein Spiel, und ich brauche Eingabefunktion, um Deadline zu haben, und ich möchte diese Zeit in einer der Konsolenecken angezeigt werden. Ich habe Timer auf separaten Thread ausgeführt. Ich möchte dem Benutzer zeigen, wie viel Zeit er noch hat, sagen wir, um varibale TimeLeft am Ende der ersten Zeile zu schreiben, aber behalten Sie alle anderen Zeilen intakt. Also gibt es irgendeine Funktion, die es mir erlaubt, Variable auf bestimmten Platz innerhalb des Konsolenfensters zu drucken/anzuzeigen/zu couten. Arbeiten in C++, Windows-Plattform, Konsole AppWindows-Konsole Based Game
Antwort
Unter Windows können Sie SetConsoleCursorPosition() verwenden, um die Position in der Konsole festzulegen, wo Ihre Ausgabe von print/cout geschrieben wird. Sie müssen das Konsolenhandle und eine COORD-Struktur an die Funktion übergeben. Sie können das Handle mit GetStdHandle() erhalten.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686025%28v=vs.85%29.aspx https://msdn.microsoft.com/en-us/library/windows/desktop/ms683231%28v=vs.85%29.aspx
Hier ist ein einfaches Beispiel:
HANDLE hndl=GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos={0,0};
SetConsoleCursorPosition(hndl, pos);
Aber warum sind Sie mit Ihrem Timer in einem separaten Thread? Das sollte nicht nötig sein. Messen Sie einfach die Zeit, die seit Beginn des Spiels vergangen ist (siehe Beispiele hier: How to use clock() in C++), und subtrahieren Sie dann die verstrichene Zeit vom gesamten Zeitlimit.
I * denke *, dass SetConsoleCursorPosition global ist, so könnte die Verwendung in einem Thread die Ausgabe des Hauptthreads beeinträchtigen. WriteConsoleOutput ist möglicherweise eine bessere Wahl. –
- 1. Open Source Turn-Based Strategy Game Engine?
- 2. Turn based Android Spiel mit Google Play Game Services und IntentService
- 3. Spielobjekt-Komponenten in Spiel-Subsystemen registrieren? (Component-based Game Object Design)
- 4. Camel Content Based Routing
- 5. Python Disk-Based Dictionary
- 6. Persistent Time-Based Queue
- 7. Yii2 ip based login
- 8. Location Based Android Entwicklung
- 9. ip based SSL-Zertifikat
- 10. php based Anruf App
- 11. Spring Annotation-Based Interceptor
- 12. Phaser Game Development XDK
- 13. Unterstützt ActiveMerchant Subscription Based Transaktion
- 14. AnyLogic Agent-Based Simulationsagenten Wertübertragung
- 15. NSTableview View Based Scrolling Performance
- 16. Periodische Windows Server Based Prozesse
- 17. Entfernen von Duplikaten Based date
- 18. Component based Winkel 1.5.x
- 19. GKAchievement (Game Center) zeigt?
- 20. in Game Center programmatisch
- 21. Mobile Game Monetarisierung SDK
- 22. Game Center InviteFailed
- 23. Snake Game zufällige Farben
- 24. Game of Life Verarbeitung
- 25. Unity Game Programmierung
- 26. flash facebook game authentication
- 27. .NET Game Server
- 28. Javascript Canvas Game - Kollisionserkennung
- 29. Game Center Achievement Ausgabe
- 30. Battleship Game-Exceptions
Siehe [this] (http://stackoverflow.com/questions/36092262/resetting-or-clearing-line-in-c-output/36092727#36092727) – ZDF
Duplizieren Sie Ihre vorherige (geschlossene) Frage. – halfer