【发布时间】:2019-12-17 02:54:39
【问题描述】:
我想制作一个计时器,它每秒显示 30、29 等,然后在有输入时停止。我知道你可以这样做:
for (int i = 60; i > 0; i--)
{
cout << i << endl;
Sleep(1000);
}
这将输出 60、59 等。但这不允许在程序运行时进行任何输入。我该如何做才能在倒计时运行时输入内容?
上下文
这不是家庭作业。我正在制作一款文字冒险游戏,其中有一段敌人冲向你,你有 30 秒的时间来决定你要做什么。我不知道如何使计时器能够允许用户在它运行时输入内容。
【问题讨论】:
-
听起来不错的家庭作业。你试过什么?你遇到了什么问题?您对您的实施有什么疑问?我们如何帮助您完成家庭作业?
-
这不是家庭作业,抱歉这个不好的问题,我已经解决了,如果您需要更多信息,请告诉我。
-
Fwiw,我不会在没有警告的情况下投反对票。这些反对票不是我的。我推荐一个线程来进行倒计时和显示,并且该线程还应该检查“输入”的标志。我还推荐
std::this_thread::sleep_until,而不是Sleep,以保持您的倒计时准确,并使逻辑更简单。 -
不幸的是,如果不进行一些异步/多线程编程,就无法解决这个问题,因为
Sleep和cin都会停止你的程序。看看这个答案,它使用std::future和超时来读取用户输入:stackoverflow.com/a/47774984/5023438 -
我不太明白,我把它放在我的代码中,但它不只是和
string input getline(cin, input) cout << input;做同样的事情