Я пытаюсь заставить световой цикл игрока двигаться в одном направлении, не останавливаясь, пока игрок не нажмет кнопку, чтобы переместить его в другом направлении. Я не уверен, как я мог сделать это с помощью kbhit, поэтому, пожалуйста, дайте мне несколько советов! Благодарю.
void Lightcycle(){
if (kbhit()) {// get user key input
char GetCh = getch(); // GetCh equal to the button the user presses
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;}
}// end kbhit
}// end function
Я думаю, вам понадобится глобальная переменная direction
и измените это, как:
if (GetCh == 'w'){direction=1;}
else if (GetCh == 's'){direction=2;}
else if (GetCh == 'd'){direction=3;}
else if (GetCh == 'a'){direction=4;}
Тогда вам понадобится где-то в вашем игровом цикле постоянно управлять движением игрока, например:
while(gameRunning){
// Random code handling game goes here
...
if (direction== 1){PlayerX = PlayerX - 1;}
else if (direction== 2){PlayerX = PlayerX +1;}
else if (direction== 3){PlayerY = PlayerY +1;}
else if (direction== 3){PlayerY = PlayerY - 1;}
...
// Other code handling game goes here
}
Других решений пока нет …