From 4f84d03614423ab910db50ab0c4895df8b21cca5 Mon Sep 17 00:00:00 2001 From: orfao Date: Wed, 13 Dec 2023 13:42:56 +0100 Subject: [PATCH] =?UTF-8?q?passage=20du=20serpent=20en=20allocation=20dyna?= =?UTF-8?q?mique=20pour=20r=C3=A9gler=20le=20probl=C3=A8me=20de=20pixel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/serpent.h | 11 ++++++----- src/jeu.c | 9 +++++---- src/serpent.c | 12 ++++++------ 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/include/serpent.h b/include/serpent.h index 628b864..753fa6c 100644 --- a/include/serpent.h +++ b/include/serpent.h @@ -4,12 +4,13 @@ typedef struct { int x, y; } Segment; +typedef Segment* Serpent; -void initialiserSerpent(Segment serpent[], int *longueur); -int gestionDeplacements(Segment serpent[], int *direction_x, int *direction_y); -int tuerSerpent(Segment serpent[], int longueur); -void mettreAJourSerpent(Segment serpent[], int *longueur, int *direction_x, int *direction_y); -void dessinerSerpent(Segment serpent[], int *longueur); +void initialiserSerpent(Serpent serpent, int *longueur); +int gestionDeplacements(Serpent serpent, int *direction_x, int *direction_y); +int tuerSerpent(Serpent serpent, int longueur); +void mettreAJourSerpent(Serpent serpent, int *longueur, int *direction_x, int *direction_y); +void dessinerSerpent(Serpent serpent, int *longueur); void attendreSerpent(unsigned long int microseconds); #endif /*SERPENT_H*/ diff --git a/src/jeu.c b/src/jeu.c index 94bc962..ac72292 100644 --- a/src/jeu.c +++ b/src/jeu.c @@ -23,13 +23,13 @@ void afficherScore(int score) { } -int mangerPomme(Segment serpent[], Pomme pomme) { - return serpent[0].x == pomme.x && serpent[0].y == pomme.y; +int mangerPomme(Serpent serpent[], Pomme pomme) { + return serpent[0]->x == pomme.x && serpent[0]->y == pomme.y; } void jouer(int nbPommes, unsigned long int vitesse,int acceleration) { int i; - Segment serpent[2400]; + Serpent serpent=(Serpent) malloc(2400*sizeof(int)); int longueur = 10; int direction_x = 1; int direction_y = 0; @@ -59,7 +59,7 @@ void jouer(int nbPommes, unsigned long int vitesse,int acceleration) { for (i = 0; i < nbPommes; i++) { if (serpent[0].x == pommes[i].x && serpent[0].y == pommes[i].y) { - longueur += 2; + longueur += 1000; score += 5; if (vitesse >= 15000) { vitesse -= 40; @@ -78,6 +78,7 @@ void jouer(int nbPommes, unsigned long int vitesse,int acceleration) { /* Attend le choix du joueur après le game over */ attendreChoixGameOver(); + free(serpent); return; } diff --git a/src/serpent.c b/src/serpent.c index e1ab803..6adb0d9 100644 --- a/src/serpent.c +++ b/src/serpent.c @@ -8,7 +8,7 @@ #define HAUTEUR_GRILLE 40 -void initialiserSerpent(Segment serpent[], int *longueur) { +void initialiserSerpent(Serpent serpent, int *longueur) { int i; int centreX = LARGEUR_GRILLE / 2; int centreY = HAUTEUR_GRILLE / 2; @@ -21,7 +21,7 @@ void initialiserSerpent(Segment serpent[], int *longueur) { *longueur = 10; } -int gestionDeplacements(Segment serpent[], int *direction_x, int *direction_y) { +int gestionDeplacements(Serpent serpent, int *direction_x, int *direction_y) { int touche; if (ToucheEnAttente()) { touche = Touche(); @@ -46,7 +46,7 @@ int gestionDeplacements(Segment serpent[], int *direction_x, int *direction_y) { return 0; } -int tuerSerpent(Segment serpent[], int longueur) { +int tuerSerpent(Serpent serpent, int longueur) { int i; /*Vérifier si la tête du serpent est sortie de la grille après le déplacement*/ if (serpent[0].x < 0 || serpent[0].x >= LARGEUR_GRILLE || serpent[0].y < 0 || serpent[0].y >= HAUTEUR_GRILLE) { @@ -65,7 +65,7 @@ int tuerSerpent(Segment serpent[], int longueur) { -void mettreAJourSerpent(Segment serpent[], int *longueur, int *direction_x, int *direction_y) { +void mettreAJourSerpent(Serpent serpent, int *longueur, int *direction_x, int *direction_y) { int i; int ancienX = serpent[*longueur - 1].x; int ancienY = serpent[*longueur - 1].y; @@ -91,7 +91,7 @@ void mettreAJourSerpent(Segment serpent[], int *longueur, int *direction_x, int } -void dessinerSerpent(Segment serpent[], int *longueur) { +void dessinerSerpent(Serpent serpent, int *longueur) { int i; for (i = 0; i < *longueur; ++i) { ChoisirCouleurDessin(CouleurParNom("yellow")); @@ -104,4 +104,4 @@ void attendreSerpent(unsigned long int microseconds) { while (Microsecondes() < attente_jusqu_a) { /*Attendre jusqu'au temps données en paramètre de la fonction*/ } -} \ No newline at end of file +}