passage du serpent en allocation dynamique pour régler le problème de pixel

This commit is contained in:
Marco ORFAO 2023-12-13 13:42:56 +01:00
parent f6a4f9b645
commit 4f84d03614
3 changed files with 17 additions and 15 deletions

View File

@ -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*/

View File

@ -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;
}

View File

@ -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*/
}
}
}