passage du serpent en allocation dynamique pour régler le problème de pixel
This commit is contained in:
parent
f6a4f9b645
commit
4f84d03614
@ -4,12 +4,13 @@
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
int x, y;
|
int x, y;
|
||||||
} Segment;
|
} Segment;
|
||||||
|
typedef Segment* Serpent;
|
||||||
|
|
||||||
void initialiserSerpent(Segment serpent[], int *longueur);
|
void initialiserSerpent(Serpent serpent, int *longueur);
|
||||||
int gestionDeplacements(Segment serpent[], int *direction_x, int *direction_y);
|
int gestionDeplacements(Serpent serpent, int *direction_x, int *direction_y);
|
||||||
int tuerSerpent(Segment serpent[], int longueur);
|
int tuerSerpent(Serpent 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);
|
||||||
void dessinerSerpent(Segment serpent[], int *longueur);
|
void dessinerSerpent(Serpent serpent, int *longueur);
|
||||||
void attendreSerpent(unsigned long int microseconds);
|
void attendreSerpent(unsigned long int microseconds);
|
||||||
|
|
||||||
#endif /*SERPENT_H*/
|
#endif /*SERPENT_H*/
|
||||||
|
@ -23,13 +23,13 @@ void afficherScore(int score) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int mangerPomme(Segment serpent[], Pomme pomme) {
|
int mangerPomme(Serpent serpent[], Pomme pomme) {
|
||||||
return serpent[0].x == pomme.x && serpent[0].y == pomme.y;
|
return serpent[0]->x == pomme.x && serpent[0]->y == pomme.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
void jouer(int nbPommes, unsigned long int vitesse,int acceleration) {
|
void jouer(int nbPommes, unsigned long int vitesse,int acceleration) {
|
||||||
int i;
|
int i;
|
||||||
Segment serpent[2400];
|
Serpent serpent=(Serpent) malloc(2400*sizeof(int));
|
||||||
int longueur = 10;
|
int longueur = 10;
|
||||||
int direction_x = 1;
|
int direction_x = 1;
|
||||||
int direction_y = 0;
|
int direction_y = 0;
|
||||||
@ -59,7 +59,7 @@ void jouer(int nbPommes, unsigned long int vitesse,int acceleration) {
|
|||||||
|
|
||||||
for (i = 0; i < nbPommes; i++) {
|
for (i = 0; i < nbPommes; i++) {
|
||||||
if (serpent[0].x == pommes[i].x && serpent[0].y == pommes[i].y) {
|
if (serpent[0].x == pommes[i].x && serpent[0].y == pommes[i].y) {
|
||||||
longueur += 2;
|
longueur += 1000;
|
||||||
score += 5;
|
score += 5;
|
||||||
if (vitesse >= 15000) {
|
if (vitesse >= 15000) {
|
||||||
vitesse -= 40;
|
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 */
|
/* Attend le choix du joueur après le game over */
|
||||||
attendreChoixGameOver();
|
attendreChoixGameOver();
|
||||||
|
free(serpent);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#define HAUTEUR_GRILLE 40
|
#define HAUTEUR_GRILLE 40
|
||||||
|
|
||||||
|
|
||||||
void initialiserSerpent(Segment serpent[], int *longueur) {
|
void initialiserSerpent(Serpent serpent, int *longueur) {
|
||||||
int i;
|
int i;
|
||||||
int centreX = LARGEUR_GRILLE / 2;
|
int centreX = LARGEUR_GRILLE / 2;
|
||||||
int centreY = HAUTEUR_GRILLE / 2;
|
int centreY = HAUTEUR_GRILLE / 2;
|
||||||
@ -21,7 +21,7 @@ void initialiserSerpent(Segment serpent[], int *longueur) {
|
|||||||
*longueur = 10;
|
*longueur = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
int gestionDeplacements(Segment serpent[], int *direction_x, int *direction_y) {
|
int gestionDeplacements(Serpent serpent, int *direction_x, int *direction_y) {
|
||||||
int touche;
|
int touche;
|
||||||
if (ToucheEnAttente()) {
|
if (ToucheEnAttente()) {
|
||||||
touche = Touche();
|
touche = Touche();
|
||||||
@ -46,7 +46,7 @@ int gestionDeplacements(Segment serpent[], int *direction_x, int *direction_y) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tuerSerpent(Segment serpent[], int longueur) {
|
int tuerSerpent(Serpent serpent, int longueur) {
|
||||||
int i;
|
int i;
|
||||||
/*Vérifier si la tête du serpent est sortie de la grille après le déplacement*/
|
/*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) {
|
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 i;
|
||||||
int ancienX = serpent[*longueur - 1].x;
|
int ancienX = serpent[*longueur - 1].x;
|
||||||
int ancienY = serpent[*longueur - 1].y;
|
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;
|
int i;
|
||||||
for (i = 0; i < *longueur; ++i) {
|
for (i = 0; i < *longueur; ++i) {
|
||||||
ChoisirCouleurDessin(CouleurParNom("yellow"));
|
ChoisirCouleurDessin(CouleurParNom("yellow"));
|
||||||
@ -104,4 +104,4 @@ void attendreSerpent(unsigned long int microseconds) {
|
|||||||
while (Microsecondes() < attente_jusqu_a) {
|
while (Microsecondes() < attente_jusqu_a) {
|
||||||
/*Attendre jusqu'au temps données en paramètre de la fonction*/
|
/*Attendre jusqu'au temps données en paramètre de la fonction*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user