我在使用kbhit和if语句时所做的游戏中有一个奇怪的滞后反应。但是,当我使用switch语句时,我看不到这个相同的滞后问题。这里是我的代码在IF和开关。带if语句的C++ kbhit滞后
下面的代码导致滞后,当我尝试移动角色时,为了角色移动,我必须按两次按钮。导致没有滞后
if (kbhit())
{
switch (getch())
{
case 'w':
PlayerX = PlayerX - 1;
break;
case 's':
PlayerX = PlayerX + 1;
break;
case 'd':
PlayerY = PlayerY + 1;
break;
case 'a':
PlayerY = PlayerY - 1;
break;
}
}
我想用
void PlayerBike()
{
if (kbhit())
{
if ((getch()) == 'w'){PlayerX = PlayerX - 1;}
else if ((getch()) == 's'){PlayerX = PlayerX +1;}
else if ((getch()) == 'd'){PlayerY = PlayerY +1;}
else if ((getch()) == 'a'){PlayerY = PlayerY - 1;}
}
}
switch语句中的if语句更好,因为它只是看起来更清洁。