没有多线程的C ++实时蛇形游戏机

C++ real time snake like game console without multithreading

我想使用 C++ 在控制台中制作贪吃蛇游戏,但我不想每隔 "frame" 等待用户输入。 如果我将使用 cin 或 getch(),程序将在每一帧等待玩家输入:

while (game)
{
    c = getch (); //input
    snake.move (c); //moving
    draw (); //drawing
}

如何在控制台中移动和绘制蛇而不是每帧都等待输入?

有没有不用多重威胁的方法来做到这一点? 也许像在代码中将某些东西放入 cin 缓冲区而不是使用控制台?可行吗?

您不能使用标准 C++,因为无法保证当用户按下某个键时,该键按下会立即得到确认。许多实现等待 Enter 键被按下,然后处理输入缓冲区。

您将需要一个事件驱动系统。您希望 OS 或硬件通知您的程序发生了按键事件。在这种系统中,您将在事件处理程序期间移动蛇。

另一种方法是轮询开关状态。当释放键时,您可以移动蛇。

上述所有解决方案都需要平台或 OS 特定功能。