2016-03-19 67 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可能是更好的选择。 –