我有一个在按下某些键时执行其他功能的功能。如果按's',它 将射击球员。如果'h'被按下,它只会伤害玩家。问题在于 choice = getch();下面:
void* command(void* data)
{
choice = getch(); //This is where the problem begins...
cout << "Command Prompt\n\n"; //I must click enter twice to view this output. why is this???
while (health > 0)
{
if (choice == 's')
{
playershot();
}
if (choice == 'h')
{
playerharm();
}
}
}
执行此操作时,出于某种原因,控制台等待我按两次ENTER然后才会输出&lt;&lt; “命令提示符”;。只有在2个ENTER后,我才会看到“命令提示符”输出。为什么getch()在等我输入我的信和2个ENTER?无论我在其他地方使用getch(),它都能正常工作,通常不需要我按回车键。这段代码中有什么错误,让我按两次ENTER键最终进入“命令提示符”?感谢。
答案 0 :(得分:2)
getch
从输入缓冲区中读取一个字符。根据您配置的输入缓冲的方式,您可能不会立即在缓冲区中输入字符 - 它们可能会被保留在驱动程序或其他地方,直到发生其他事件(例如点击&#39;输入&#39;)。
如何配置输入处理取决于您的系统/操作系统。
答案 1 :(得分:0)
你应该_getch。根据MSDN,不推荐使用getch,并且应该使用_getch:
从Visual C ++ 2005开始,不推荐使用此POSIX函数。使用 相反,ISO C ++符合_getch。
这里是link到_getch