您不需要两个同时循环。你应该只有一个循环。在每次循环迭代中,您将更新游戏的输出,然后检查用户是否输入了任何输入。如果他有,那么您阅读并处理它;否则,您只需继续下一个循环迭代。使用 _kbhit 和 _getch 函数是一种简单的入门方法,但最终您可能需要使用更高级的东西,如 ncurses 或 Win32 控制台函数。
while( !gameOver ) {
DisplayGameState();
if( _kbhit() ) {
int c = _getch();
ProcessInput( c );
}
}