#include #include #include #define CYCLE 10000L /*variables*/ int seconde=0; int minute=0; int seconde_actuel=0; int old_seconde=0; char timer[6]; unsigned long int suivant; int go_on=1; int serpent; int x = 600; int y = 400; int direction = 4; /*1 : vers le haut , 2 : vers le bas; 3 : vers la gauche, 4 : vers la droite*/ int t; /*Fonction Pour créer la première scene du jeu*/ void DessinerScene(){ snprintf(timer,6,"%02d:%02d", minute, seconde); ChoisirCouleurDessin(CouleurParComposante(141,199,63)); RemplirRectangle(20,20,1160,700); ChoisirCouleurDessin(CouleurParComposante(255,255,255)); EcrireTexte(10,760,timer,2); serpent=ChargerSprite("serpent.png"); AfficherSprite(serpent, x, y); } /*Fonction pour mettre à jour unuquement le timer*/ void Update_Timer(){ snprintf(timer,6,"%02d:%02d", minute, seconde); ChoisirCouleurDessin(CouleurParComposante(0,0,0)); RemplirRectangle(0,700,1200,800); ChoisirCouleurDessin(CouleurParComposante(255,255,255)); EcrireTexte(10,760,timer,2); } /*fonction pour mettre à jour la position du serpent*/ void Update_Serpent(){ ChoisirCouleurDessin(CouleurParComposante(141,199,63)); RemplirRectangle(20,20,1160,700); AfficherSprite(serpent, x, y); } void Terrain(){ if (x >1180 || x<20) go_on=0; if (y<0 || y >700) go_on=0; } /*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 == 59){ minute=minute+1; seconde=0; Update_Timer(); }else{ seconde = seconde+1; Update_Timer(); } } } } /*Input Serpent*/ void Controle(){ while(ToucheEnAttente()){ t = Touche(); switch(t){ case XK_Left : direction=3; break; case XK_Right: direction=4; break; case XK_Up: direction=1; break; case XK_Down: direction=2; break; case XK_Escape: go_on=0; break; break; } } } /*Avancement automatique du serpent en fonction de la direction*/ void Serpent(){ if (direction == 1){ y=y-20; } if (direction == 2){ y=y+20; } if (direction == 3){ x=x-20; } if (direction == 4){ x=x+20; } Update_Serpent(); Terrain(); sleep(1); } /*Fonction Principale*/ int main(){ /* paramétrage de la fenêtre + chargement 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(); Controle(); Serpent(); } /* fermeture de la fenêtre si ECHAP pressé*/ FermerGraphique(); return EXIT_SUCCESS; }