当我将 kbhit 与 if 语句一起使用时,我在制作的游戏中有一种奇怪的滞后反应。但是,当我使用 switch 语句时,我没有看到同样的滞后问题。这是我在 IF 和 switch 中的代码。
当我尝试移动角色时,下面的这段代码会导致延迟,我必须按两次按钮才能移动角色。
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 (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;
}
}
我想更好地使用 if 语句,因为它看起来更干净。