#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=10; 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 pp=0; int pomme, pommex[5], pommey[5]; int fond; /*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"); fond = ChargerSprite("fond.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)); pomme=ChargerSprite("pomme.png"); for (p = 0; p < 5; p++) { pommex[p] = ((rand() % (58)+1)*20); pommey[p] = ((rand() % (35)+1)*20); AfficherSprite(pomme, pommex[p], pommey[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(){ AfficherSprite(fond, pos_x[segment-1], pos_y[segment-1]); 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(){ for (pp = 0; pp < 5; ++pp) { AfficherSprite(pomme, pommex[pp], pommey[pp]); } } /*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; }