#include #include #include #include #include #define CYCLE 10000L /*variables*/ /*timer*/ int seconde=0; int minute=0; int seconde_actuel=0; int old_seconde=0; char timer[6]; unsigned long int suivant; /*fin de jeu*/ int go_on=1; /*serpent*/ 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; int segment=5; int i=0; int pos_x[60]; int pos_y[60]; int old_x[60]; int old_y[60]; /*variable pomme*/ int p=0; int pomme, pommex, pommey; /*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"); pomme=ChargerSprite("pomme.png"); for (i = 0; i < segment; i++){ AfficherSprite(serpent, x-(i*20), y); pos_x[i]=x-(i*20); pos_y[i]=y; old_y[i]=pos_y[i]; old_x[i]=pos_x[i]; } for (p = 0; p < 5; p++) { srand(time(NULL)); pommex = (rand() % (58)); pommey = (rand() % (35)); AfficherSprite(pomme, pommex*20, pommey*20); } } /*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, pos_x[0], pos_y[0]); for (i=1 ; i1180 || pos_x[0]<20) go_on=0; if (pos_y[0]<0 || pos_y[0] >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){ pos_y[0]=old_y[0]-20; } if (direction == 2){ pos_y[0]=old_y[0]+20; } if (direction == 3){ pos_x[0]=old_x[0]-20; } if (direction == 4){ pos_x[0]=old_x[0]+20; } Update_Serpent(); Terrain(); usleep(100000); } /*Apparition aléatoire des pommes*/ void Pomme(){ } /*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(); Pomme(); } /* fermeture de la fenêtre si ECHAP pressé*/ FermerGraphique(); return EXIT_SUCCESS; }