diff --git a/evenement.c b/evenement.c index 867b40f..ec2585c 100644 --- a/evenement.c +++ b/evenement.c @@ -5,18 +5,27 @@ #include <time.h> -void AfficherTimerEtScore(int m,int n,int score) /*Afficher le temps passé et le score*/ +void AfficherTimerEtScore(long unsigned int *score, long unsigned int temps) /*Afficher le temps passé et le score*/ { char buf[100]; - char buff[100]; + char buff[100]; /* Stockage du score et du timer */ couleur j; + + time_t fin_temps; + long int timer; + int minutes,secondes; + fin_temps = time(NULL); /* Gestion du timer et des variables */ + timer = difftime(fin_temps, temps); + secondes = timer % 60; + minutes = timer / 60; + j=CouleurParNom("yellow"); ChoisirCouleurDessin(j); ChoisirEcran(1); CopierZone(2,1,0,0,930,710,0,0); - snprintf(buf,100,"temps : %02d:%02d",m,n); - snprintf(buff,100,"SCORE : %07d",score); + snprintf(buf,100,"TEMPS : %02d:%02d",minutes,secondes); + snprintf(buff,100,"SCORE : %07ld",*score); EcrireTexte(60,650,buf,2); EcrireTexte(600,650,buff,2); CopierZone(1,0,0,0,930,710,0,0); @@ -32,30 +41,40 @@ void InitialiserPastilles(PIXELS *pastilles, PIXELS *serpent, int longueur_serpe srand(time(NULL)); for (i = 0; i < PASTILLES; i++) { - pastilles[i] = gen_pastille(serpent,longueur_serpent); + pastilles[i] = gen_pastille(serpent,pastilles,longueur_serpent); RemplirRectangle(pastilles[i].x,pastilles[i].y,T_PIXEL,T_PIXEL); } } +void MourrirSerpent(PIXELS *serpent, int longueur_serpent) +{ + int i = 0; + for(i=1;i<longueur_serpent;i++) + { + if(serpent[0].x == serpent[i].x && serpent[0].y == serpent[i].y ) + { + FermerGraphique(); + } + } +} + int MangerPastille(PIXELS *serpent, PIXELS* pastilles,unsigned long *score,int longueur_serpent) { couleur r; int i = 0; - int j = 0; r = CouleurParNom("red"); ChoisirCouleurDessin(r); for(i=0;i<PASTILLES;i++) { if(serpent[0].x == pastilles[i].x && serpent[0].y == pastilles[i].y) { - pastilles[i] = gen_pastille(serpent,longueur_serpent); + pastilles[i] = gen_pastille(serpent,pastilles,longueur_serpent); RemplirRectangle(pastilles[i].x,pastilles[i].y,T_PIXEL,T_PIXEL); *score+=5; return 1; } } - return 0; } @@ -97,6 +116,7 @@ void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur) tempY = tempY2; } ChoisirCouleurDessin(g); + RemplirRectangle(serpent[longueur-1].x,serpent[longueur-1].y,T_PIXEL,T_PIXEL); diff --git a/evenement.h b/evenement.h index 2d397c4..5c3e9af 100644 --- a/evenement.h +++ b/evenement.h @@ -9,9 +9,11 @@ void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur); void InitialiserPastilles(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent); -void AfficherTimerEtScore(int m,int n,unsigned long *score); +void AfficherTimerEtScore(long unsigned int *score, long unsigned int temps); int PastilleSurSerpent(PIXELS pastille, PIXELS *serpent, int longueur_serpent); +void MourrirSerpent(PIXELS *serpent, int longueur_serpent); + #endif \ No newline at end of file diff --git a/evenement.o b/evenement.o index 46b8640..b05ca1f 100644 Binary files a/evenement.o and b/evenement.o differ diff --git a/main.c b/main.c index 9a6b51c..d1d464e 100644 --- a/main.c +++ b/main.c @@ -18,7 +18,7 @@ int ArrondirPixel(int nombre) /* Calcule un arrondi du pixel pour pouvoir respec return arrondi; } -PIXELS gen_pastille(PIXELS *serpent,int longueur_serpent) +PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,int longueur_serpent) /* nb_pastille = int nombre de pastille voulue , p_pastilles est un pointeur d'un tableau de pixels qui sont des pastilles*/ /*Générer une pastille dans la grid*/ @@ -34,13 +34,12 @@ PIXELS gen_pastille(PIXELS *serpent,int longueur_serpent) y_pastille = ArrondirPixel(rand()%H_GAME); for(i=0;i<longueur_serpent;i++) { - if(x_pastille == serpent[i].x && y_pastille == serpent[i].y) + if(x_pastille == serpent[i].x && y_pastille == serpent[i].y && x_pastille == pastilles[i].x && y_pastille == pastilles[i].y ) { - ok = 1; + ok = 1; /* Check si la pastille se genère sur une coordonné du serpent ou d'une pastille existante */ } - } - + } }while(ok); if(x_pastille < DECALEMENT) @@ -101,13 +100,15 @@ void DessinerScene(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent) /* int main() { unsigned char pause = 0; - unsigned long *score =0; + unsigned long score =0; unsigned long suivant; int go_on=1; int n = 0; int m = 0; + + time_t temps; - size_t longueur_serpent = 200; + size_t longueur_serpent = 12; size_t longueur_pastilles = PASTILLES; PIXELS *serpent = (PIXELS *)malloc(longueur_serpent * sizeof(PIXELS)); PIXELS *pastilles = (PIXELS *)malloc(longueur_pastilles * sizeof(PIXELS)); @@ -115,6 +116,8 @@ int main() int direction = 0; int direction_davant = 0; + temps = time(NULL); /*Première mesure du temps*/ + if(serpent == NULL) { fprintf(stderr, "Erreur d'allocation de mémoire.\n"); return EXIT_FAILURE; @@ -189,11 +192,12 @@ int main() n=0; } - AfficherTimerEtScore(m,n,score); + AfficherTimerEtScore(&score,temps); + suivant=Microsecondes()+delta; direction_davant = direction; /* Check si le serpent à le droit de changer de direction */ - + MourrirSerpent(serpent,longueur_serpent); DeplacementSerpent(direction,serpent,longueur_serpent); if(MangerPastille(serpent,pastilles,&score,longueur_serpent) == 1) { diff --git a/main.h b/main.h index 67e5cc9..cd48c04 100644 --- a/main.h +++ b/main.h @@ -19,6 +19,6 @@ struct PIXELS { typedef struct PIXELS PIXELS; -PIXELS gen_pastille(PIXELS *serpent,int longueur_serpent); +PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,int longueur_serpent); #endif diff --git a/main.o b/main.o index 4772387..e91cbd1 100644 Binary files a/main.o and b/main.o differ diff --git a/prog b/prog index 5af8e29..dce928b 100755 Binary files a/prog and b/prog differ diff --git a/test.c b/test.c new file mode 100644 index 0000000..d8d1319 --- /dev/null +++ b/test.c @@ -0,0 +1,26 @@ +#include <stdio.h> +#include <time.h> + +void afficherTemps(double secondes) { + int minutes = (int)(secondes / 60); + int secondesRestantes = (int)(secondes) % 60; + + printf("%02d:%02d\n", minutes, secondesRestantes); +} + +int main(void) +{ + time_t start, end; + double cpu_time_used; + + start = time(NULL); + + end = time(NULL); + + cpu_time_used = difftime(end, start); + + printf("Le programme a pris : "); + afficherTemps(cpu_time_used); + + return 0; +}