kbhit を if ステートメントで使用すると、作成中のゲームで奇妙な遅延反応が発生します。ただし、switch ステートメントを使用している場合、この同じ遅延の問題は発生しません。IF と switch の両方のコードを次に示します。
以下のこのコードは、キャラクターを動かそうとするとラグが発生します。キャラクターを動かすには、ボタンを 2 回押す必要があります。
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ステートメントをより適切に使用したいと思います。