From 5fbd3e63767c172f38bfc3d440ddf8c7d1d8c758 Mon Sep 17 00:00:00 2001 From: brigitte Date: Fri, 24 Nov 2023 14:58:27 +0100 Subject: [PATCH] =?UTF-8?q?bug=20r=C3=A9solu=20:=20deplacment=20limit?= =?UTF-8?q?=C3=A9=20par=20le=20timer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JEUX_SERPENT/main.c | 73 ++++++++++++++++++++++++++++++++------------- 1 file changed, 52 insertions(+), 21 deletions(-) diff --git a/JEUX_SERPENT/main.c b/JEUX_SERPENT/main.c index c584835..4be8b40 100644 --- a/JEUX_SERPENT/main.c +++ b/JEUX_SERPENT/main.c @@ -1,11 +1,15 @@ #include #include #include +#define CYCLE 10000L /*variables*/ int seconde=0; int minute=0; -char timer[10]; +int seconde_actuel=0; +int old_seconde=0; +char timer[6]; +unsigned long int suivant; int go_on=1; @@ -15,10 +19,9 @@ int y = 350; int direction = 4; /*1 : vers le haut , 2 : vers le bas; 3 : vers la gauche, 4 : vers la droite*/ int t; -/*Fonction pour pouvoir mettre à jour/actualisé la scène (timer, position du serpent)*/ +/*Fonction Pour créer la première scene du jeu*/ void DessinerScene(){ - snprintf(timer,10,"%02d:%02d", minute, seconde); - EffacerEcran(CouleurParComposante(0,0,0)); + snprintf(timer,6,"%02d:%02d", minute, seconde); ChoisirCouleurDessin(CouleurParComposante(141,199,63)); RemplirRectangle(20,20,1160,700); ChoisirCouleurDessin(CouleurParComposante(255,255,255)); @@ -27,18 +30,43 @@ void DessinerScene(){ AfficherSprite(serpent, x, y); } -/*Fonction pour connaitre et afficher le temps*/ -void Timer(){ - seconde=seconde+1; - if(seconde>=60) - { - seconde=0; - minute=minute+1; - } - sleep(1); +/*Fonction pour mettre à jour unuquement le timer*/ +void Update_Timer(){ + snprintf(timer,6,"%02d:%02d", minute, seconde); + ChoisirCouleurDessin(CouleurParComposante(0,0,0)); + RemplirRectangle(0,730,1200,700); + ChoisirCouleurDessin(CouleurParComposante(255,255,255)); + EcrireTexte(10,760,timer,2); + } -/*déplacment du serpent dans une direction*/ +void Update_Serpent(){ + ChoisirCouleurDessin(CouleurParComposante(141,199,63)); + RemplirRectangle(20,20,1160,700); + serpent=ChargerSprite("serpent.png"); + AfficherSprite(serpent, x, y); +} + +/*Fonction pour calculer le temps*/ +void Timer(){ + if(Microsecondes()> suivant){ + suivant = Microsecondes()+CYCLE; + seconde_actuel = (suivant/1000000)%10; + if(seconde_actuel !=old_seconde){ + old_seconde = seconde_actuel; + if(seconde == 60){ + minute=minute+1; + seconde=0; + Update_Timer(); + }else{ + seconde = seconde+1; + Update_Timer(); + } + } + } +} + +/*Input Serpent*/ void Controle(){ while(ToucheEnAttente()){ t = Touche(); @@ -61,7 +89,7 @@ void Controle(){ } -/*Avancement automatique du serpent*/ +/*Avancement automatique du serpent en fonction de la direction*/ void Serpent(){ if (direction == 1){ y=y-20; @@ -75,26 +103,29 @@ void Serpent(){ if (direction == 4){ x=x+20; } + Update_Serpent(); + sleep(1); } /*Fonction Principale*/ int main(){ - /* paramétrage de la fenêtre */ + /* paramétrage de la fenêtre + charment première scène */ InitialiserGraphique(); CreerFenetre(350,100,1200,800); + EffacerEcran(CouleurParComposante(0,0,0)); + suivant = Microsecondes()+CYCLE; + old_seconde=(suivant/1000000)%10; DessinerScene(); /*Boucle Principale du Programme*/ while(go_on){ Timer(); - Serpent(); Controle(); - DessinerScene(); + Serpent(); } - - - /* fermeture de la fenêtre */ + + /* fermeture de la fenêtre si ECHAP pressé*/ FermerGraphique(); return EXIT_SUCCESS; }