在制作小行星射击游戏时,我使用_kbhit()
and kbhit()
. 我不是专家,但这是我认为我遇到的问题:
int run = 1;
int main() {
while(run){
if(GetUserInput() == 2)
printf("W");
if(GetUserInput() == 1)
printf("S");
Sleep(50);
}
}
int GetUserInput(){
if(kbhit()){
char c = _getch();
if(c == 's')
return 2;
if(c == 'w')
return 1;
}
else
return 0;*
}
所以,我认为正在发生的事情,它首先检查GetUserInput()
,并且由于 的性质getch()
,从缓冲区读取键盘并丢弃?无论如何,我将值存储在其中c
并且应该适当地返回。但它只进行第一次检查。是因为在第一次检查后(在main()
函数中)缓冲区上没有更多的输入了吗?