diff --git a/JEUX_SERPENT/Jeux b/JEUX_SERPENT/Jeux index afe109d..91bc635 100755 Binary files a/JEUX_SERPENT/Jeux and b/JEUX_SERPENT/Jeux differ diff --git a/JEUX_SERPENT/fonction.h b/JEUX_SERPENT/fonction.h index 83f5b9f..4cc9e2a 100644 --- a/JEUX_SERPENT/fonction.h +++ b/JEUX_SERPENT/fonction.h @@ -6,36 +6,33 @@ extern int seconde, minute, seconde_actuel, old_seconde; extern char timer[6]; -extern unsigned long int suivant; -extern int serpent, tete_up, tete_down, tete_right, tete_left; extern int pos_x[2400], pos_y[2400], old_x[2400], old_y[2400]; -extern int pomme, pommex[5], pommey[5]; -extern int fond, Nbr; +extern int pommex[5], pommey[5]; extern char score[4]; extern int go_on; extern int go_menu; extern int pause; -extern int imageMenu; -void Pomme(); +void Pomme(int pomme); int Controle(int direction); -void Serpent(int direction, int segment); -void Update_Serpent(int direction, int segment); +void Serpent(int direction, int segment, int tete_up, int tete_down, int tete_left, int tete_right, int serpent, int fond); +void Update_Serpent(int direction, int segment, int tete_up, int tete_down, int tete_left, int tete_right, int serpent); long int Update_Vitesse(long int vitesse); int Update_Segment(int segment); void Terrain(); -void Timer(); + +void Timer(unsigned long int suivant); void Update_Timer(); -void DessinerScene(); -void Score(int segment); +void DessinerScene(int segment, int serpent, int pomme); +int Score(int segment, int Nbr); void Collision(int segment); -void MenuDeFin(); +void MenuDeFin(int Nbr); void MenuDebut(); void Attendre(long int microsecondes); diff --git a/JEUX_SERPENT/main.c b/JEUX_SERPENT/main.c index f0978e1..a4cc087 100644 --- a/JEUX_SERPENT/main.c +++ b/JEUX_SERPENT/main.c @@ -6,23 +6,21 @@ int seconde=0, minute=0, seconde_actuel, old_seconde; char timer[6]; -unsigned long int suivant; -int serpent; -int segment=10; int pos_x[2400], pos_y[2400], old_x[2400], old_y[2400]; -int tete_up, tete_down, tete_right, tete_left; -int pomme, pommex[5], pommey[5]; -int fond, Nbr; +int pommex[5], pommey[5]; char score[4]; int go_on=1; int go_menu=1; int pause=1; -int imageMenu; -int go_menu2=1; +int go_menu2=1; +unsigned long int suivant; +int tete_up, tete_down, tete_right, tete_left, fond, pomme, serpent; +int Nbr; +int segment=10; int direction=4; /*1 : vers le haut, 2 : vers le bas, 3 vers la gauche, 4 vers la droite*/ long int vitesse=100000; int t; @@ -36,8 +34,19 @@ int main(){ InitialiserGraphique(); CreerFenetre(350,100,1200,800); + /*chargement des sprites nécessaire pour le jeu*/ + serpent=ChargerSprite("IMG/serpent.png"); + fond=ChargerSprite("IMG/fond.png"); + tete_up = ChargerSprite("IMG/tete_up.png"); + tete_down =ChargerSprite("IMG/tete_down.png"); + tete_left = ChargerSprite("IMG/tete_left.png"); + tete_right = ChargerSprite("IMG/tete_right.png"); + pomme=ChargerSprite("IMG/pomme.png"); + + /*creation du menu du début*/ MenuDebut(); + /*choix dans le menu*/ while(go_menu2){ while(ToucheEnAttente()){ t3 = Touche(); @@ -53,32 +62,34 @@ int main(){ } } + /*creation de la scene du jeu*/ EffacerEcran(CouleurParComposante(0,0,0)); suivant=Microsecondes()+CYCLE; old_seconde=(suivant/1000000)%10; - DessinerScene(segment); + DessinerScene(segment, serpent, pomme); /*Boucle Principale du Programme*/ while(go_on){ direction = Controle(direction); vitesse = Update_Vitesse(vitesse); segment = Update_Segment(segment); + Nbr= Score(segment, Nbr); Controle(direction); if (pause==1){ - Timer(); + Timer(suivant); Collision(segment); Update_Vitesse(vitesse); Update_Segment(segment); - Serpent(direction, segment); - Score(segment); - Pomme(); + Serpent(direction, segment, tete_up, tete_down, tete_right, tete_left, serpent, fond); + Score(segment, Nbr); + Pomme(pomme); Attendre(vitesse); } } /* fermeture de la fenêtre si ECHAP pressé + Menu de Fin*/ - MenuDeFin(); + MenuDeFin(Nbr); while(go_menu){ while(ToucheEnAttente()){ @@ -90,6 +101,7 @@ int main(){ } } } + /*fermeture du programme*/ FermerGraphique(); return EXIT_SUCCESS; } \ No newline at end of file diff --git a/JEUX_SERPENT/scene.c b/JEUX_SERPENT/scene.c index 1eb6249..2e75b5a 100644 --- a/JEUX_SERPENT/scene.c +++ b/JEUX_SERPENT/scene.c @@ -11,7 +11,7 @@ void Terrain(){ } /*Fonction Pour créer la première scene du jeu*/ -void DessinerScene(int segment){ +void DessinerScene(int segment, int serpent, int pomme){ int p=0; int i=0; snprintf(timer,6,"%02d:%02d", minute, seconde); @@ -19,12 +19,7 @@ void DessinerScene(int segment){ RemplirRectangle(20,20,1160,680); ChoisirCouleurDessin(CouleurParComposante(255,255,255)); EcrireTexte(10,760,timer,2); - serpent=ChargerSprite("IMG/serpent.png"); - fond=ChargerSprite("IMG/fond.png"); - tete_up = ChargerSprite("IMG/tete_up.png"); - tete_down =ChargerSprite("IMG/tete_down.png"); - tete_left = ChargerSprite("IMG/tete_left.png"); - tete_right = ChargerSprite("IMG/tete_right.png"); + for (i = 0; i < segment; i++){ AfficherSprite(serpent, 500-(i*20), 360); @@ -34,7 +29,6 @@ void DessinerScene(int segment){ old_x[i]=pos_x[i]; } srand(time(NULL)); - pomme=ChargerSprite("IMG/pomme.png"); for (p = 0; p < 5; p++) { pommex[p] = ((rand() % (58)+1)*20); pommey[p] = ((rand() % (34)+1)*20); @@ -44,6 +38,7 @@ void DessinerScene(int segment){ /*création du menu d'accueil*/ void MenuDebut(){ + int imageMenu; imageMenu=ChargerSprite("IMG/menu1.png"); AfficherSprite(imageMenu,0,0); EcrireTexte(450,100,"JEU DU SERPENT",2); @@ -52,7 +47,8 @@ void MenuDebut(){ } /*création du Menu de Fin*/ -void MenuDeFin(){ +void MenuDeFin(int Nbr){ + int imageMenu; EffacerEcran(CouleurParComposante(0,0,0)); imageMenu=ChargerSprite("IMG/menu1.png"); AfficherSprite(imageMenu,0,0); @@ -67,7 +63,7 @@ void MenuDeFin(){ } /*Apparition aléatoire des pommes*/ -void Pomme(){ +void Pomme(int pomme){ int pp=0; for (pp = 0; pp < 5; ++pp) { AfficherSprite(pomme, pommex[pp], pommey[pp]); diff --git a/JEUX_SERPENT/score.c b/JEUX_SERPENT/score.c index b004934..6dae734 100644 --- a/JEUX_SERPENT/score.c +++ b/JEUX_SERPENT/score.c @@ -3,7 +3,7 @@ #include #include "fonction.h" -void Score(int segment){ +int Score(int segment, int Nbr){ Nbr=(segment-10)*10; snprintf(score,5,"%04d", Nbr); ChoisirCouleurDessin(CouleurParComposante(0,0,0)); @@ -11,4 +11,5 @@ void Score(int segment){ ChoisirCouleurDessin(CouleurParComposante(255,255,255)); EcrireTexte(1000,750,"Score :",2); EcrireTexte(1100,750,score,2); + return Nbr; } \ No newline at end of file diff --git a/JEUX_SERPENT/serpent.c b/JEUX_SERPENT/serpent.c index 7c1133c..f4f749e 100644 --- a/JEUX_SERPENT/serpent.c +++ b/JEUX_SERPENT/serpent.c @@ -48,7 +48,7 @@ int Controle(int direction){ } /*Avancement automatique du serpent en fonction de la direction*/ -void Serpent(int direction, int segment){ +void Serpent(int direction, int segment, int tete_up, int tete_down, int tete_left, int tete_right, int serpent, int fond){ if (direction == 1){ pos_y[0]=old_y[0]-20; } @@ -61,7 +61,8 @@ void Serpent(int direction, int segment){ if (direction == 4){ pos_x[0]=old_x[0]+20; } - Update_Serpent(direction, segment); + AfficherSprite(fond, pos_x[segment-1], pos_y[segment-1]); + Update_Serpent(direction, segment, tete_up, tete_down, tete_right, tete_left, serpent); Terrain(); } @@ -72,7 +73,6 @@ long int Update_Vitesse(long int vitesse){ if(pommex[p]==pos_x[0] && pommey[p]==pos_y[0]){ if (vitesse>20000){ vitesse=vitesse-1500; - printf("%ld\n", vitesse); } } } @@ -92,9 +92,9 @@ int Update_Segment(int segment){ } /*fonction pour mettre à jour la position du serpent*/ -void Update_Serpent(int direction, int segment){ +void Update_Serpent(int direction, int segment, int tete_up, int tete_down, int tete_left, int tete_right, int serpent){ int i=1; - AfficherSprite(fond, pos_x[segment-1], pos_y[segment-1]); + /*affichage de la tete en fonction de la direction du serpent*/ if (direction==1){ AfficherSprite(tete_up, pos_x[0], pos_y[0]); diff --git a/JEUX_SERPENT/timer.c b/JEUX_SERPENT/timer.c index b82e0d6..dfb79f1 100644 --- a/JEUX_SERPENT/timer.c +++ b/JEUX_SERPENT/timer.c @@ -5,7 +5,7 @@ #define CYCLE 100000L /*Fonction pour calculer le temps*/ -void Timer(){ +void Timer(unsigned long int suivant){ if(Microsecondes()> suivant){ suivant = Microsecondes()+CYCLE; seconde_actuel = (suivant/1000000)%10; @@ -32,6 +32,7 @@ void Update_Timer(){ EcrireTexte(10,760,timer,2); } +/*fonction afin de créer un délai (en microseconde*/ void Attendre(long int microsecondes){ long int attendre; attendre = Microsecondes()+ microsecondes;