我想使用c ++在控制台中制作蛇游戏,但我不想等待所有"框架"用于用户输入。 如果我使用cin或getch(),程序将每帧等待玩家输入:
while (game)
{
c = getch (); //input
snake.move (c); //moving
draw (); //drawing
}
如何移动蛇并在控制台中绘制它并且不要每帧等待输入?
没有多重讨论,有没有办法做到这一点? 也许类似于在代码中使用cin缓冲区而不是使用控制台?它可行吗?
答案 0 :(得分:4)
您无法使用标准C ++,因为无法保证当用户按下某个键时,会立即确认按键。许多实现等待按下Enter键,然后处理输入缓冲区。
您需要一个事件驱动系统。您希望操作系统或硬件通知您的程序发生了按键事件。在这种系统中,您可以在事件处理程序中移动蛇。
另一种方法是轮询交换机状态。当钥匙被释放时,你可以移动蛇。
以上所有解决方案都需要平台或操作系统特定的功能。