2016-03-19 10 views
-4

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

+0

Siehe [this] (http://stackoverflow.com/questions/36092262/resetting-or-clearing-line-in-c-output/36092727#36092727) – ZDF

+0

Duplizieren Sie Ihre vorherige (geschlossene) Frage. – halfer

Antwort

1

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.

+0

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. –