#include #include #include #include #include #define CYCLE 10000L #define LARGEUR 58 #define HAUTEUR 35 /*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=10; int i=0; int pos_x[60]; int pos_y[60]; int old_x[60]; int old_y[60]; /*variable pomme*/ int pomme, p, pp; int pomx[5]; int pomy[5]; /*Fonction Pour créer la première scene du jeu*/ void DessinerScene(){ snprintf(timer,6,"%02d:%02d", minute, seconde); ChoisirCouleurDessin(CouleurParComposante( 43, 219, 15 )); 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]; } srand(time(NULL)); for (p = 0; p < 5; p++) { pomx[p] = ((rand() % (58)+1)*20); pomy[p] = ((rand() % (35)+1)*20); AfficherSprite(pomme, pomx[p], pomy[p]); } } /*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( 43, 219, 15 )); 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]<20 || 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(){ AfficherSprite(pomme, pomx[0], pomy[0]); printf("%d, %d\n", pomx[0], pomy[0]); AfficherSprite(pomme, pomx[1], pomy[1]); AfficherSprite(pomme, pomx[2], pomy[2]); AfficherSprite(pomme, pomx[3], pomy[3]); AfficherSprite(pomme, pomx[4], pomy[4]); } /*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){ Pomme(); Timer(); Controle(); Serpent(); } /* fermeture de la fenêtre si ECHAP pressé*/ FermerGraphique(); return EXIT_SUCCESS; }