diff --git a/evenement.c b/evenement.c index ed204b3..5f69acf 100644 --- a/evenement.c +++ b/evenement.c @@ -4,7 +4,6 @@ #include "main.h" #include <time.h> - void AfficherTimerEtScore(long unsigned int *score, int minutes,int secondes) /*Afficher le temps passé et le score*/ { char buf[100]; @@ -27,10 +26,6 @@ void AfficherTimerEtScore(long unsigned int *score, int minutes,int secondes) void InitialiserPastilles(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent) { int i; - couleur r; - - r = CouleurParNom("red"); - ChoisirCouleurDessin(r); srand(time(NULL)); @@ -57,12 +52,9 @@ int MourrirSerpent(PIXELS *serpent, int longueur_serpent) return 0; } -int MangerPastille(PIXELS *serpent, PIXELS* pastilles,unsigned long *score,int longueur_serpent) +int MangerPastille(PIXELS *serpent, PIXELS* pastilles,unsigned long *score,int longueur_serpent,unsigned long int *vitesse) { - couleur r; int i = 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) @@ -70,41 +62,33 @@ int MangerPastille(PIXELS *serpent, PIXELS* pastilles,unsigned long *score,int l pastilles[i] = gen_pastille(serpent,pastilles,longueur_serpent); ChargerImage("./images/PommePastille.png",pastilles[i].x,pastilles[i].y,0,0,T_PIXEL,T_PIXEL); *score+=5; + *vitesse/=1.008; return 1; } } return 0; } - -/*int PastilleSurSerpent(PIXELS pastille, int *serpent, size_t longueur_serpent) -{ - int i; - - for(i=0;i<longueur_serpent;i+=2) - { - if (pastille.x==serpent[i] && pastille.y ==serpent[i+1]) - { - return 1; - } - } - return 0; -}*/ - - void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur) { int tempX = serpent[0].x; int tempY = serpent[0].y; int i; - couleur g; - couleur j; + couleur bg; ChoisirEcran(2); - j=CouleurParNom("yellow"); - g=CouleurParComposante(171, 204, 104); + bg=CouleurParComposante(171, 204, 104); + ChoisirCouleurDessin(bg); + + if(serpent[longueur-1].x > 900 || serpent[longueur-1].x < 0) + { + serpent[longueur-1].x = 30; + serpent[longueur-1].y = 710; /* Valeurs toujours de couleurs verte */ + } + + RemplirRectangle(serpent[longueur-1].x,serpent[longueur-1].y,T_PIXEL,T_PIXEL); - for (i = 1; i < longueur; i++) { + for (i = 1; i <= longueur; i++) { int tempX2 = serpent[i].x; int tempY2 = serpent[i].y; @@ -113,15 +97,8 @@ void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur) tempX = tempX2; tempY = tempY2; - - if(i == longueur-1) - { - ChoisirCouleurDessin(g); - RemplirRectangle(serpent[i].x,serpent[i].y,T_PIXEL,T_PIXEL); - } } - ChoisirCouleurDessin(j); if(direction == 0) /* Direction vers la gauche */ { serpent[0].x-=T_PIXEL; @@ -131,7 +108,6 @@ void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur) { serpent[0].y-=T_PIXEL; ChargerImage("./images/SnakePart.png",serpent[0].x,serpent[0].y,0,0,T_PIXEL,T_PIXEL); - } else if(direction == 2) /* Direction vers la droite */ { diff --git a/evenement.h b/evenement.h index f127f37..bedbe7d 100644 --- a/evenement.h +++ b/evenement.h @@ -3,7 +3,7 @@ #ifndef EVENEMENT_H #define EVENEMENT_H -int MangerPastille(PIXELS *serpent, PIXELS* pastilles,unsigned long *score,int longueur_serpent); +int MangerPastille(PIXELS *serpent, PIXELS* pastilles,unsigned long int *score,int longueur_serpent,unsigned long int *vitesse); void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur); diff --git a/main.c b/main.c index 105c01b..7ee2b68 100644 --- a/main.c +++ b/main.c @@ -5,8 +5,8 @@ #include "evenement.h" #include "main.h" -#define delta 100000L -#define delta2 1000000L +#define DELTA 100000L +#define DELTA2 1000000L int ArrondirPixel(int nombre) /* Calcule un arrondi du pixel pour pouvoir respecter la norme des 40 lignes et 60 colonnes */ { @@ -22,8 +22,6 @@ int ArrondirPixel(int nombre) /* Calcule un arrondi du pixel pour pouvoir respec 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*/ - /*Code n'est pas complet*/ /*-Elles se génèrent à des endroits qui peuvent être les mêmes ou gêner le snake*/ { int x_pastille,y_pastille,i; @@ -35,9 +33,13 @@ PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,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 && x_pastille == pastilles[i].x && y_pastille == pastilles[i].y ) + if(x_pastille == serpent[i].x && y_pastille == serpent[i].y) { - ok = 1; /* Check si la pastille se genère sur une coordonné du serpent ou d'une pastille existante */ + ok = 1; /* Check si la pastille se genère sur une coordonné du serpent */ + } + if(x_pastille == pastilles[i].x && y_pastille == pastilles[i].y) + { + ok = 1; } } @@ -63,25 +65,18 @@ PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,int longueur_serpent) void InitialisationDuSerpent(PIXELS *p_serpent) /* L'initialisation du serpent */ { int x_millieu = 0, y_millieu = 0 , compteur = 0; - couleur j; - j=CouleurParNom("yellow"); - ChoisirCouleurDessin(j); x_millieu = T_PIXEL*30; /* 30 = 60 colonnes divisé par 2*/ y_millieu = T_PIXEL*20; /* 20 = 40 colonnes divisé par 2*/ ChoisirEcran(2); ChargerImage("./images/SnakePart.png",x_millieu,y_millieu,0,0,T_PIXEL,T_PIXEL); - /* printf("x_millieu : %d | y_millieu : %d\n",x_millieu,y_millieu); DEBUG*/ - p_serpent[0].x = x_millieu; p_serpent[0].y = y_millieu; - for(compteur=0;compteur<=9;compteur++) /* Commence par 1 car p_serpent index 0 initialisées pour la tête et 2 + 2x9 = 10 couples de coordonnées 2D */ + for(compteur=0;compteur<9;compteur++) /*Commence par 1 car p_serpent index 0 initialisées pour la tête et 2 + 2x9 = 10 couples de coordonnées 2D */ { p_serpent[compteur+1].x = p_serpent[compteur].x+T_PIXEL; p_serpent[compteur+1].y = p_serpent[compteur].y; - /*printf("x_millieu : %d | y_millieu : %d\n",p_serpent[compteur+2],p_serpent[compteur+3]); DEBUG*/ - ChargerImage("./images/SnakePart.png",p_serpent[compteur+1].x,p_serpent[compteur+1].y,0,0,T_PIXEL,T_PIXEL); } } @@ -107,21 +102,20 @@ void DessinerScene(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent) /* RemplirRectangle(T_PIXEL,T_PIXEL,W_GAME,H_GAME); InitialiserPastilles(pastilles,serpent,longueur_serpent); InitialisationDuSerpent(serpent); - } int main() { unsigned char pause = 0; - unsigned long score =0; + unsigned long score = 0; unsigned long suivant; unsigned long suivant2; int go_on=1; int secondes = 0; int minutes = 0; - + unsigned long int vitesse = DELTA; - size_t longueur_serpent = 12; + size_t longueur_serpent = 10; size_t longueur_pastilles = PASTILLES; PIXELS *serpent = (PIXELS *)malloc(longueur_serpent * sizeof(PIXELS)); PIXELS *pastilles = (PIXELS *)malloc(longueur_pastilles * sizeof(PIXELS)); @@ -138,7 +132,6 @@ int main() return EXIT_FAILURE; } - InitialiserGraphique(); CreerFenetre(10,10,W_WINDOW,H_WINDOW); /* Peut être changer cette ligne avec la fonction Maxx et Maxy fournie dans graph.h ??*/ ChoisirTitreFenetre("SNAKE SAE11 IN C"); @@ -146,6 +139,8 @@ int main() while(go_on) /* Lancement du cycle pour les Inputs et le Jeu*/ { + + if (ToucheEnAttente() == 1) { switch (Touche()) @@ -192,7 +187,8 @@ int main() } } else - { if(pause==0){ + { if(pause==0) + { if (Microsecondes()>suivant2) { @@ -202,34 +198,31 @@ int main() minutes++; secondes = 0; } - suivant2=Microsecondes()+delta2; + suivant2=Microsecondes()+DELTA2; } if (Microsecondes()>suivant) { - - suivant=Microsecondes()+delta; - AfficherTimerEtScore(&score,minutes,secondes); - direction_davant = direction; /* Check si le serpent à le droit de changer de direction */ - if(MourrirSerpent(serpent,longueur_serpent)) - { - FermerGraphique(); - free(serpent); - free(pastilles); - return EXIT_FAILURE; + suivant=Microsecondes()+vitesse; + AfficherTimerEtScore(&score,minutes,secondes); + direction_davant = direction; /* Check si le serpent à le droit de changer de direction */ + if(MourrirSerpent(serpent,longueur_serpent)) + { + FermerGraphique(); + free(serpent); + free(pastilles); + return EXIT_FAILURE; + } + DeplacementSerpent(direction,serpent,longueur_serpent); + if(MangerPastille(serpent,pastilles,&score,longueur_serpent,&vitesse) == 1) + { + longueur_serpent+=2; + serpent = (PIXELS*) realloc(serpent,longueur_serpent * sizeof(PIXELS)); + } } - DeplacementSerpent(direction,serpent,longueur_serpent); - if(MangerPastille(serpent,pastilles,&score,longueur_serpent) == 1) - { - longueur_serpent+=2; - serpent = (PIXELS*) realloc(serpent,longueur_serpent * sizeof(PIXELS)); - } - } } - } - } - + } FermerGraphique(); return EXIT_SUCCESS; -} \ No newline at end of file +}