From cc1e72bee9597286b2cb5d2b5389d55c9b6ce83b Mon Sep 17 00:00:00 2001 From: keraudre Date: Sun, 17 Dec 2023 04:09:38 +0100 Subject: [PATCH] ajout de la fonction de manger des pommes --- snake/deplacement.c | 69 +++++++++++++++++++------------- snake/fenetre.c | 28 +++---------- snake/lancement | Bin 20760 -> 0 bytes snake/main.c | 35 +++++++--------- snake/plateau_init.c | 16 ++++---- snake/plateau_init.h | 6 +-- snake/score_init.c | 15 ++++--- snake/supp_queue.c | 93 ++++++++++++++++++++++++++++++++++++++----- 8 files changed, 165 insertions(+), 97 deletions(-) delete mode 100755 snake/lancement diff --git a/snake/deplacement.c b/snake/deplacement.c index c6f41b5..c092ce2 100644 --- a/snake/deplacement.c +++ b/snake/deplacement.c @@ -19,11 +19,11 @@ void deplacement (struct adresse* pointeur, unsigned char* sens) { int** plateau = pointeur -> plateau; - signed char* tete = pointeur -> tete; + unsigned char* tete = pointeur -> tete; - unsigned int** corps_serpent = pointeur -> corps_serpent; + int** corps_serpent = pointeur -> corps_serpent; - unsigned int* indice_queue = pointeur -> indice_queue; + unsigned short* indice_queue = pointeur -> indice_queue; int touche; @@ -47,20 +47,24 @@ void deplacement (struct adresse* pointeur, unsigned char* sens) { if (touche == XK_Left) { plateau[tete[0]][tete[1]] = 0; - - plateau[tete[0]][tete[1] - 1] = 1; + plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0; tete[1] = tete[1] - 1; + ChoisirCouleurDessin(yellow); RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20); *sens = GAUCHE; - supp_queue(pointeur); + supp_queue(pointeur); + + plateau[tete[0]][tete[1]] = 1; + + return; @@ -70,19 +74,21 @@ void deplacement (struct adresse* pointeur, unsigned char* sens) { plateau[tete[0]][tete[1]] = 0; - plateau[tete[0]][tete[1] + 1] = 1; plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0; tete[1] = tete[1] + 1; + ChoisirCouleurDessin(yellow); RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20); *sens = DROITE; - supp_queue(pointeur); + supp_queue(pointeur); + + plateau[tete[0]][tete[1]] = 1; return; } @@ -91,19 +97,21 @@ void deplacement (struct adresse* pointeur, unsigned char* sens) { plateau[tete[0]][tete[1]] = 0; - plateau[tete[0] - 1][tete[1]] = 1; plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0; tete[0] = tete[0] - 1; + ChoisirCouleurDessin(yellow); RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20); *sens = HAUT; - supp_queue(pointeur); + supp_queue(pointeur); + + plateau[tete[0]][tete[1]] = 1; return; } @@ -112,19 +120,21 @@ void deplacement (struct adresse* pointeur, unsigned char* sens) { plateau[tete[0]][tete[1]] = 0; - plateau[tete[0] + 1][tete[1]] = 1; plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0; tete[0] = tete[0] + 1; + ChoisirCouleurDessin(yellow); RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20); *sens = BAS; - supp_queue(pointeur); + supp_queue(pointeur); + + plateau[tete[0]][tete[1]] = 1; return; @@ -137,71 +147,76 @@ void deplacement (struct adresse* pointeur, unsigned char* sens) { if ( *sens == BAS) { - plateau[tete[0] + 1][tete[1]] = 1; plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0; tete[0] = tete[0] + 1; + + ChoisirCouleurDessin(yellow); RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20); - + + supp_queue(pointeur); + plateau[tete[0]][tete[1]] = 1; } if ( *sens == HAUT) { - plateau[tete[0] - 1][tete[1]] = 1; plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0; tete[0] = tete[0] - 1; + ChoisirCouleurDessin(yellow); RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20); - + + supp_queue(pointeur); + plateau[tete[0]][tete[1]] = 1; + } if ( *sens == DROITE) { - plateau[tete[0]][tete[1] + 1] = 1; plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0; tete[1] = tete[1] + 1; + ChoisirCouleurDessin(yellow); RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20); - + + supp_queue(pointeur); + plateau[tete[0]][tete[1]] = 1; + } if ( *sens == GAUCHE) { - plateau[tete[0]][tete[1] - 1] = 1; plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0; tete[1] = tete[1] - 1; + + ChoisirCouleurDessin(yellow); RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20); - + + supp_queue(pointeur); + plateau[tete[0]][tete[1]] = 1; } - /* mise à jour de la position de queue dans le plateau et sur le plateau */ - - supp_queue( pointeur); - } - - - } diff --git a/snake/fenetre.c b/snake/fenetre.c index 6113b55..982fa2f 100755 --- a/snake/fenetre.c +++ b/snake/fenetre.c @@ -6,15 +6,16 @@ #include #include #include "plateau_init.h" +#include "fenetre.h" -int start (struct adresse* pointeur) { +void start (struct adresse* pointeur) { couleur green, grey, yellow, red, black, white; - int** tableau = pointeur -> plateau; + int** plateau = pointeur -> plateau; int i, j; @@ -86,14 +87,14 @@ int start (struct adresse* pointeur) { for (i = 0; i < LIGNES; i++) { for (j = 0; j < COLONNES; j++) { - if ( tableau[i][j] == 0) { + if ( plateau[i][j] == 0) { green = CouleurParComposante(50,205,50); ChoisirCouleurDessin(green); RemplirRectangle(20*(j+1),20*(i+1),20,20); } - if ( tableau[i][j] == 1) { + if ( plateau[i][j] == 1) { yellow = CouleurParComposante(255,255,0); ChoisirCouleurDessin(yellow); @@ -101,7 +102,7 @@ int start (struct adresse* pointeur) { } - if ( tableau[i][j] == 2) { + if ( plateau[i][j] == 2) { red = CouleurParComposante(255,0,0); ChoisirCouleurDessin(red); @@ -114,23 +115,6 @@ int start (struct adresse* pointeur) { - /* déallocation du tableau */ - - for ( i = 0; i < LIGNES; i++) { - - free(tableau[i]); - - } - - - free(tableau); - - - - - - return EXIT_SUCCESS; - } diff --git a/snake/lancement b/snake/lancement deleted file mode 100755 index 024dfbfdffdacde5735d0b79ed5da7468940d2c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20760 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 N10pYmrU8x1001k;7AOD! diff --git a/snake/main.c b/snake/main.c index 85a9d38..e0773a4 100644 --- a/snake/main.c +++ b/snake/main.c @@ -1,9 +1,11 @@ + #include #include #include #include "fenetre.h" #include "plateau_init.h" #include "deplacement.h" +#include "score_init.h" #define CYCLE 200000L @@ -19,7 +21,7 @@ int main(void) { int i = 0; - unsigned int* indice_queue = pointeur -> indice_queue; + unsigned short* indice_queue = pointeur -> indice_queue; unsigned char* sens = NULL; @@ -51,22 +53,19 @@ int main(void) { - - - - start(pointeur); compteur = score_init(); - while ( jeu = 1) { + while ( jeu == 1) { if (Microsecondes() > suivant) { - printf("%u %u\n", pointeur -> corps_serpent[*indice_queue][0], pointeur -> corps_serpent[*indice_queue][1]); + printf("%d %d\n", pointeur -> corps_serpent[*indice_queue][0], pointeur -> corps_serpent[*indice_queue][1]); + + printf("[%hhu %hhu]\n", tete[0], tete[1]); - printf("[%hhu %hhu]\n", tete[0], tete[1]); deplacement(pointeur, sens); @@ -74,11 +73,10 @@ int main(void) { suivant = Microsecondes() + CYCLE; - - } + } - } + } @@ -86,12 +84,13 @@ int main(void) { for ( i = 0; i < LIGNES; i++) { - free(pointeur->plateau[i]); + free(pointeur -> plateau[i]); } + free(pointeur -> plateau); - for ( i =0; i < TAILLE_SERPENT; i++) { + for ( i = 0; i < TAILLE_SERPENT; i++) { free(pointeur -> corps_serpent[i]); @@ -100,9 +99,6 @@ int main(void) { free(pointeur -> corps_serpent); - - free(pointeur -> plateau); - free(pointeur -> tete); free(pointeur -> indice_queue); @@ -120,9 +116,8 @@ int main(void) { + Touche(); + FermerGraphique(); - Touche(); - FermerGraphique(); - - return EXIT_SUCCESS; + return EXIT_SUCCESS; } diff --git a/snake/plateau_init.c b/snake/plateau_init.c index b15546c..50348ba 100755 --- a/snake/plateau_init.c +++ b/snake/plateau_init.c @@ -15,10 +15,10 @@ struct adresse* plateau_init(void) { int ligne_pomme, colonne_pomme, i; unsigned char* tete = NULL; - unsigned int* indice_queue = NULL; - unsigned int* taille_serpent = NULL; + unsigned short* indice_queue = NULL; + unsigned short* taille_serpent = NULL; - unsigned int** corps_serpent = NULL; + int** corps_serpent = NULL; int** plateau = NULL; @@ -42,9 +42,9 @@ struct adresse* plateau_init(void) { /* allocation du tableau tete et queue */ - tete = malloc(2*sizeof(unsigned char)); + tete = malloc(2 * sizeof(unsigned char)); - indice_queue = malloc(sizeof(unsigned int)); + indice_queue = malloc(sizeof(unsigned short)); @@ -65,11 +65,11 @@ struct adresse* plateau_init(void) { /* allocation du corps du serpent */ - corps_serpent = malloc(TAILLE_SERPENT * sizeof(unsigned int*)); + corps_serpent = malloc(TAILLE_SERPENT * sizeof(int*)); for ( i = 0; i < TAILLE_SERPENT; i++) { - corps_serpent[i] = malloc( 2 * sizeof(unsigned int)); + corps_serpent[i] = malloc( 2 * sizeof(int)); } @@ -77,7 +77,7 @@ struct adresse* plateau_init(void) { /* allocation de la taille du serpent */ - taille_serpent = malloc(sizeof(unsigned int)); + taille_serpent = malloc(sizeof(unsigned short)); /* positionnement du serpent et marquage de la tete et la queue */ diff --git a/snake/plateau_init.h b/snake/plateau_init.h index 55843a2..b3b7072 100644 --- a/snake/plateau_init.h +++ b/snake/plateau_init.h @@ -15,10 +15,10 @@ struct adresse { int** plateau; - unsigned int** corps_serpent; - unsigned int* taille_serpent; + int** corps_serpent; + unsigned short* taille_serpent; unsigned char* tete; - unsigned int* indice_queue; + unsigned short* indice_queue; }; diff --git a/snake/score_init.c b/snake/score_init.c index b29ac2b..28b237a 100644 --- a/snake/score_init.c +++ b/snake/score_init.c @@ -9,15 +9,18 @@ short int* score_init(void) { short int* compteur = NULL; - compteur = malloc(sizeof(short int)); - *compteur = 0; + char a[20]; - char a[20]; - sprintf(a, "%d", *compteur); + + compteur = malloc(sizeof(short int)); + *compteur = 0; - EcrireTexte(1250, 600, a, 2); - return compteur; + sprintf(a, "%d", *compteur); + + EcrireTexte(1250, 600, a, 2); + + return compteur; } diff --git a/snake/supp_queue.c b/snake/supp_queue.c index a384983..44dc869 100644 --- a/snake/supp_queue.c +++ b/snake/supp_queue.c @@ -6,6 +6,7 @@ #include #include #include +#include #include "supp_queue.h" @@ -14,29 +15,99 @@ void supp_queue( struct adresse* pointeur ) { - unsigned int** corps_serpent = pointeur -> corps_serpent; + int** corps_serpent = pointeur -> corps_serpent; - unsigned int* taille_serpent = pointeur -> taille_serpent; + int** plateau = pointeur -> plateau; + + unsigned short* taille_serpent = pointeur -> taille_serpent; unsigned char* tete = pointeur -> tete; - unsigned int* indice_queue = pointeur -> indice_queue; + unsigned short* indice_queue = pointeur -> indice_queue; + + + int ligne_pomme, colonne_pomme; - - couleur green; + couleur green, red; + + + srand(time(NULL)); + + - green = CouleurParComposante(50,205,50); - ChoisirCouleurDessin(green); - RemplirRectangle(20*(corps_serpent[*indice_queue][1]+1),20*(corps_serpent[*indice_queue][0]+1),20,20); - corps_serpent[*indice_queue][0] = tete[0]; - corps_serpent[*indice_queue][1] = tete[1]; + /* teste si le serpent mange une pomme */ + if (plateau[tete[0]][tete[1]] == 2 ) { + + + /* augmentation de la taille du serpent */ + + *taille_serpent = *taille_serpent + 1; + + corps_serpent = realloc( corps_serpent, *taille_serpent * sizeof(int*)); + pointeur -> corps_serpent = corps_serpent; + + corps_serpent[*taille_serpent - 1] = malloc( 2 * sizeof(int)); + + corps_serpent[*taille_serpent - 1][0] = tete[0]; + corps_serpent[*taille_serpent - 1][1] = tete[1]; + + + + + + /* apparition de la nouvelle pomme */ + + + + + ligne_pomme = rand() % 40; + colonne_pomme = rand() % 60; + + /* teste pour ne pas faire apparaître la pomme sur une case déjà occupée */ + + while (plateau[ligne_pomme][colonne_pomme] == 2 || plateau[ligne_pomme][colonne_pomme] == 1) { + + ligne_pomme = rand() % 40; + colonne_pomme = rand() % 60; + } + + plateau[ligne_pomme][colonne_pomme] = 2; + + red = CouleurParComposante(255,0,0); + ChoisirCouleurDessin(red); + RemplirRectangle(20*(colonne_pomme + 1),20*(ligne_pomme + 1),20,20); + + + + + + + } + + else { - *indice_queue = *indice_queue + 1; + green = CouleurParComposante(50,205,50); + ChoisirCouleurDessin(green); + RemplirRectangle(20*(corps_serpent[*indice_queue][1]+1),20*(corps_serpent[*indice_queue][0]+1),20,20); + + corps_serpent[*indice_queue][0] = tete[0]; + corps_serpent[*indice_queue][1] = tete[1]; + + + *indice_queue = *indice_queue + 1; + + } + + + + + + if ( *indice_queue == *taille_serpent ) {