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

时间:2015-12-14 19:36:29

标签: c++ input console cin

我想使用c ++在控制台中制作蛇游戏,但我不想等待所有"框架"用于用户输入。 如果我使用cin或getch(),程序将每帧等待玩家输入:

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

如何移动蛇并在控制台中绘制它并且不要每帧等待输入?

没有多重讨论,有没有办法做到这一点? 也许类似于在代码中使用cin缓冲区而不是使用控制台?它可行吗?

1 个答案:

答案 0 :(得分:4)

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

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

另一种方法是轮询交换机状态。当钥匙被释放时,你可以移动蛇。

以上所有解决方案都需要平台或操作系统特定的功能。