This commit is contained in:
Thomas ROGNANT 2023-12-13 16:06:34 +01:00
parent 75e534f236
commit 6895ca77f7

View File

@ -236,6 +236,16 @@ int CollisionAvecSerpent(Serpent* serpent) {
return 0; return 0;
} }
int EstDirectionOpposee(int directionActuelle, int nouvelleDirection) {
if ((directionActuelle == 1 && nouvelleDirection == 2) ||
(directionActuelle == 2 && nouvelleDirection == 1) ||
(directionActuelle == 3 && nouvelleDirection == 4) ||
(directionActuelle == 4 && nouvelleDirection == 3)) {
return 1; // Les directions sont opposées
}
return 0; // Les directions ne sont pas opposées
}
int CollisionAvecBordures(Serpent* serpent) { int CollisionAvecBordures(Serpent* serpent) {
if (serpent->corps[0].x < 0 || serpent->corps[0].x >= LARGEUR * TAILLE_CASE || if (serpent->corps[0].x < 0 || serpent->corps[0].x >= LARGEUR * TAILLE_CASE ||
serpent->corps[0].y < 0 || serpent->corps[0].y >= HAUTEUR * TAILLE_CASE) { serpent->corps[0].y < 0 || serpent->corps[0].y >= HAUTEUR * TAILLE_CASE) {
@ -347,26 +357,29 @@ int main() {
} }
if (ToucheEnAttente()) { if (ToucheEnAttente()) {
int touche = Touche(); int touche = Touche();
switch (touche) { int nouvelleDirection;
case XK_Right:
direction = 1; // Déterminer la nouvelle direction en fonction de la touche pressée
break; if (touche == XK_Right) {
case XK_Left: nouvelleDirection = 1;
direction = 2; } else if (touche == XK_Left) {
break; nouvelleDirection = 2;
case XK_Up: } else if (touche == XK_Up) {
direction = 3; nouvelleDirection = 3;
break; } else if (touche == XK_Down) {
case XK_Down: nouvelleDirection = 4;
direction = 4; } else if (touche == XK_space) {
break;
case XK_space:
jeuEnPause = 1; jeuEnPause = 1;
break; } else if (touche == XK_Escape) {
case XK_Escape:
return EXIT_FAILURE; return EXIT_FAILURE;
} }
// Vérifier si la nouvelle direction n'est pas opposée à la direction actuelle
if (!EstDirectionOpposee(direction, nouvelleDirection)) {
// Mettre à jour la direction du serpent
direction = nouvelleDirection;
} }
}
DeplacerSerpent(&serpent, &direction); DeplacerSerpent(&serpent, &direction);
perdu = GestionCollision(&serpent, &pommes, &obstacles, perdu, &score); perdu = GestionCollision(&serpent, &pommes, &obstacles, perdu, &score);
} else { } else {