【问题标题】:Windows Console Based Game [duplicate]基于 Windows 控制台的游戏 [重复]
【发布时间】:2016-03-19 17:01:17
【问题描述】:

所以,我正在制作一款游戏,我需要输入功能来设置截止日期,并且我希望该时间显示在控制台的某个角落。 我有计时器在单独的线程上运行。 我想向用户显示他还剩下多少时间,可以说在第一行末尾写变量 TimeLeft,但保持所有其他行不变。 那么是否有任何功能可以让我在控制台窗口内的特定位置打印/显示/cout 变量。 使用 C++、Windows 平台、控制台应用程序

【问题讨论】:

  • this
  • 您之前的(已关闭)问题的副本。

标签: c++ windows console


【解决方案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++),然后从总时限中减去经过的时间。

【讨论】:

  • 认为 SetConsoleCursorPosition 是全局的,因此在线程中使用它可能会干扰主线程的输出。 WriteConsoleOutput 可能是更好的选择。
猜你喜欢
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2022-06-23
  • 2010-11-03
  • 2013-01-09
  • 1970-01-01
  • 2012-02-09
相关资源
最近更新 更多