2016-03-19 112 views
-4

因此,我正在製作一款遊戲,並且我需要輸入函數才能擁有截止日期,並且我希望將時間顯示在其中一個控制檯角落中。我有計時器在單獨的線程上運行。 我想向用戶顯示他已經離開了多少時間,可以說在第一行的末尾寫入varibale TimeLeft,但保持所有其他行不變。 那麼是否有任何功能允許我在控制檯窗口內的特定位置上打印/顯示/ cout變量。 使用C++,Windows平臺,控制檯應用程序基於Windows控制檯的遊戲

+0

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

+0

重複您以前的(關閉的)問題。 – halfer

回答

1

在Windows上,您可以使用SetConsoleCursorPosition()在控制檯中設置位置,從print/cout輸出的內容將被寫入。您需要將控制檯句柄和COORD結構傳遞給函數。您可以使用GetStdHandle()獲取句柄。

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

這裏有一個簡單的例子:

HANDLE hndl=GetStdHandle(STD_OUTPUT_HANDLE); 
COORD pos={0,0}; 
SetConsoleCursorPosition(hndl, pos); 

但是,爲什麼你運行你的計時器在一個單獨的線程?不應該有任何需要這樣做。只需測量遊戲開始後的時間(請參閱示例:How to use clock() in C++),然後從總時限中減去已用時間。

+0

我認爲SetConsoleCursorPosition是全局的,所以在一個線程中使用它可能會干擾主線程的輸出。 WriteConsoleOutput可能是更好的選擇。 –