【发布时间】:2021-10-04 06:15:51
【问题描述】:
我要写一个程序,里面有一个while循环,用户可以随时输入程序,但是while循环不等待接收用户输入,继续工作。每当用户输入新输入时,程序将根据该输入运行。该程序使用 C++ 编写,程序名称为 Snake Game。对不起,我的代码太长了,我可以展示一小部分。
while(1)
{
Move(grid,snake,grid_rows,grid_cols,len_snake,ch);
show(grid,grid_rows,grid_cols);
Sleep(1000);
cin>>ch;
system("CLS");
}
【问题讨论】:
-
使用标准 C++,
std::cin上的所有输入操作都将阻塞,直到终端决定实际向您的程序发送某些内容。您需要使用特定于操作系统的功能来进行非阻塞终端输入。 -
Mby 您正在寻找线程功能吗?
-
如果它能让我达到我的目标
-
看看这个:stackoverflow.com/questions/29335758/…, @Sule 这可能会让事情变得不必要地复杂化。
-
@Sule - 线程不涵盖它。如果在等待用户输入(来自终端、键盘或其他任何东西)的线程上使用阻塞 I/O,则该线程将被阻塞。因此,如果多个线程试图捕获用户输入,则用户输入在实践中效果不佳。需要的是非阻塞输入(例如,如果没有待处理的输入,则输入操作会立即返回 - 通常表明它已经这样做了),而 C++ 标准没有规定这样的事情。因此,如前所述,需要特定于操作系统的功能(或包装此类功能的某些库)。
标签: c++