J'écris un programme de serpent en C++ (visualisation avec JNI) et les boutons de mouvement valides sont soit gauche (déplacer 90 ° dans le sens antihoraire) ou droite (déplacer 90 ° vers la droite).Nested instructions if C++
Dans chaque boucle de la boucle de jeu que je récupère un événement clé à partir d'une interface graphique et déplacer mon serpent selon cet événement clé, voici comment je fais ceci:
if(key_event != NULL){
if(key_event == LEFT){
if(moveDirection == UP || moveDirection == DOWN){
moveDirection = LEFT;
(moveDirection == UP) ? /*change turn after head*/ : /*change turn after head*/;
} //else if (moveDir == LEFT || RIGHT)
} //else if (key_event == RIGHT)
//...
}
if avec: /*change turn after head*/
est parce que si le serpent se déplace vers le bas et va gauche il y a un autre graphique pour le tour alors quand il va jusqu'à et va gauche. Cela conduit à un grand nombre d'instructions if et n'est pas très lisible, donc je me demande s'il existe un moyen général de résoudre des instructions if imbriquées comme celle-ci.
EDIT:
key_event et moveDirection sont des enums.
Fondamentalement, c'est une combinaison de walkTarget et les réponses de Mark B, cela devrait certainement améliorer la lisibilité, merci! – Aerus