diff --git a/main.c b/main.c index f8fb1c0..6370673 100644 --- a/main.c +++ b/main.c @@ -10,8 +10,17 @@ #define DELTA 100000L #define DELTA2 1000000L +void FinJeu(PIXELS* serpent,PIXELS* pastilles,PIXELS* obstacle) +{ + free(serpent); + free(pastilles); + free(obstacle); + FermerGraphique(); +} + int main() { + /* Déclarations des variables */ unsigned char pause = 0; unsigned long score = 0; unsigned long suivant; @@ -24,9 +33,12 @@ int main() int valeur_retourne = 0; unsigned char perdu = 0; + /* Tailles des tableaux dynamiques */ size_t longueur_serpent = 10; size_t longueur_pastilles = PASTILLES; size_t longueur_obstacle = OBSTACLE; + + /* Allocation dynamique des tableaux */ PIXELS *serpent = (PIXELS *)malloc(longueur_serpent * sizeof(PIXELS)); PIXELS *pastilles = (PIXELS *)malloc(longueur_pastilles * sizeof(PIXELS)); PIXELS *obstacle = (PIXELS *)malloc(longueur_obstacle * sizeof(PIXELS)); @@ -35,6 +47,8 @@ int main() int direction = 0; int direction_davant = 0; + /* Vérification des allocations mémoire */ + if(serpent == NULL) { fprintf(stderr, "Erreur d'allocation de mémoire.\n"); return EXIT_FAILURE; @@ -48,7 +62,7 @@ int main() return EXIT_FAILURE; } - + /* Initialisations */ InitialiserGraphique(); CreerFenetre(10,10,W_WINDOW,H_WINDOW); /* Peut être changer cette ligne avec la fonction Maxx et Maxy fournie dans graph.h ??*/ ChoisirTitreFenetre("SNAKE SAE11 IN C"); @@ -57,6 +71,7 @@ int main() { if(perdu == 1) { + /* Affichage de l'écran de fin de partie */ PerduGUI(); if (ToucheEnAttente() == 1) { @@ -65,11 +80,15 @@ int main() case XK_Return: perdu = 0; break; + case XK_Escape: + FinJeu(serpent,pastilles,obstacle); + return EXIT_SUCCESS; } } } else { + /* Affichage du menu principal */ Menu(); if (ToucheEnAttente() == 1) { @@ -87,10 +106,7 @@ int main() DessinerScene(pastilles,serpent,obstacle,longueur_serpent,longueur_pastilles,longueur_obstacle); break; case XK_Escape: - free(serpent); - free(pastilles); - free(obstacle); - FermerGraphique(); + FinJeu(serpent,pastilles,obstacle); return EXIT_SUCCESS; } } @@ -98,69 +114,17 @@ int main() while(game_on) /* Lancement du cycle pour les Inputs et le Jeu*/ { - if (ToucheEnAttente() == 1) + if(Touches(&direction,&direction_davant,&pause)) { - switch (Touche()) - { - case XK_Up: - direction = 1; - if(direction_davant == 3 && direction == 1) - { - direction = direction_davant; - } - break; - case XK_Down: - direction = 3; - if(direction_davant == 1 && direction == 3) - { - direction = direction_davant; /* Changements de direction du serpent*/ - } - break; - case XK_Left: - direction = 0; - if(direction_davant == 2 && direction == 0) - { - direction = direction_davant; - } - break; - case XK_Right: - direction = 2; - if(direction_davant == 0 && direction == 2) - { - direction = direction_davant; - } - break; - - case XK_space: - if(pause ==0) - { - pause=1; - break; - } - pause=0; - break; + FinJeu(serpent,pastilles,obstacle); + return EXIT_SUCCESS; + } - case XK_Escape: - if(pause == 1) - { - free(serpent); - free(pastilles); - free(obstacle); - FermerGraphique(); - return EXIT_SUCCESS; - } - break; - } - - if(pause==1) { Pause(); } - - } - else - { if(pause==0) + else if(pause==0) { if (Microsecondes()>suivant2) @@ -195,10 +159,7 @@ int main() } } } - } - free(serpent); - free(pastilles); - free(obstacle); - FermerGraphique(); + FinJeu(serpent,pastilles,obstacle); return EXIT_SUCCESS; } +