diff --git a/JEUX_SERPENT/Jeux b/JEUX_SERPENT/Jeux index c07a3bb..afe109d 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 159dab4..83f5b9f 100644 --- a/JEUX_SERPENT/fonction.h +++ b/JEUX_SERPENT/fonction.h @@ -10,7 +10,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 segment; extern int pomme, pommex[5], pommey[5]; extern int fond, Nbr; @@ -24,19 +23,20 @@ extern int imageMenu; void Pomme(); int Controle(int direction); -void Serpent(int direction); -void Update_Serpent(int direction); +void Serpent(int direction, int segment); +void Update_Serpent(int direction, int segment); long int Update_Vitesse(long int vitesse); +int Update_Segment(int segment); void Terrain(); void Timer(); void Update_Timer(); void DessinerScene(); -void Score(); -void Collision(); +void Score(int segment); +void Collision(int segment); void MenuDeFin(); void MenuDebut(); -void Attendre(); +void Attendre(long int microsecondes); #endif \ No newline at end of file diff --git a/JEUX_SERPENT/main.c b/JEUX_SERPENT/main.c index e1c93a1..f0978e1 100644 --- a/JEUX_SERPENT/main.c +++ b/JEUX_SERPENT/main.c @@ -4,14 +4,11 @@ #include "fonction.h" #define CYCLE 10000L -long int attendre=0; int seconde=0, minute=0, seconde_actuel, old_seconde; char timer[6]; unsigned long int suivant; -long int vitesse=100000; int serpent; -int direction=4; /*1 : vers le haut, 2 : vers le bas, 3 vers la gauche, 4 vers la droite*/ 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; @@ -25,6 +22,9 @@ int go_menu=1; int pause=1; int imageMenu; int go_menu2=1; + +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; int t2; int t3; @@ -56,20 +56,22 @@ int main(){ EffacerEcran(CouleurParComposante(0,0,0)); suivant=Microsecondes()+CYCLE; old_seconde=(suivant/1000000)%10; - DessinerScene(); + DessinerScene(segment); /*Boucle Principale du Programme*/ while(go_on){ direction = Controle(direction); vitesse = Update_Vitesse(vitesse); + segment = Update_Segment(segment); Controle(direction); if (pause==1){ Timer(); - Score(); - Collision(); + Collision(segment); Update_Vitesse(vitesse); - Serpent(direction); + Update_Segment(segment); + Serpent(direction, segment); + Score(segment); Pomme(); Attendre(vitesse); } diff --git a/JEUX_SERPENT/scene.c b/JEUX_SERPENT/scene.c index 9e88fc0..1eb6249 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(){ +void DessinerScene(int segment){ int p=0; int i=0; snprintf(timer,6,"%02d:%02d", minute, seconde); diff --git a/JEUX_SERPENT/score.c b/JEUX_SERPENT/score.c index 692de19..b004934 100644 --- a/JEUX_SERPENT/score.c +++ b/JEUX_SERPENT/score.c @@ -3,7 +3,7 @@ #include #include "fonction.h" -void Score(){ +void Score(int segment){ Nbr=(segment-10)*10; snprintf(score,5,"%04d", Nbr); ChoisirCouleurDessin(CouleurParComposante(0,0,0)); diff --git a/JEUX_SERPENT/serpent.c b/JEUX_SERPENT/serpent.c index 9ccd1fa..7c1133c 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){ +void Serpent(int direction, int segment){ if (direction == 1){ pos_y[0]=old_y[0]-20; } @@ -61,7 +61,7 @@ void Serpent(int direction){ if (direction == 4){ pos_x[0]=old_x[0]+20; } - Update_Serpent(direction); + Update_Serpent(direction, segment); Terrain(); } @@ -70,9 +70,6 @@ long int Update_Vitesse(long int vitesse){ int p=0; for(p=0; p<5; p++){ if(pommex[p]==pos_x[0] && pommey[p]==pos_y[0]){ - segment+=2; - pommex[p] = ((rand() % (58)+1)*20); - pommey[p] = ((rand() % (34)+1)*20); if (vitesse>20000){ vitesse=vitesse-1500; printf("%ld\n", vitesse); @@ -82,8 +79,20 @@ long int Update_Vitesse(long int vitesse){ return vitesse; } +int Update_Segment(int segment){ + int p=0; + for(p=0; p<5; p++){ + if(pommex[p]==pos_x[0] && pommey[p]==pos_y[0]){ + segment=segment+2; + pommex[p] = ((rand() % (58)+1)*20); + pommey[p] = ((rand() % (34)+1)*20); + } + } + return segment; +} + /*fonction pour mettre à jour la position du serpent*/ -void Update_Serpent(int direction){ +void Update_Serpent(int direction, int segment){ int i=1; AfficherSprite(fond, pos_x[segment-1], pos_y[segment-1]); /*affichage de la tete en fonction de la direction du serpent*/ @@ -120,7 +129,7 @@ void Update_Serpent(int direction){ } /*Fonction pour détécter si le serpent se touche lui même*/ -void Collision(){ +void Collision(int segment){ int i=1; if(seconde!=0 || minute!=0){ for(i=1; i