diff --git a/JEUX_SERPENT/fond.png b/JEUX_SERPENT/fond.png new file mode 100644 index 0000000..6a7c1fa Binary files /dev/null and b/JEUX_SERPENT/fond.png differ diff --git a/JEUX_SERPENT/main.c b/JEUX_SERPENT/main.c index b5e4aa9..e987e7a 100644 --- a/JEUX_SERPENT/main.c +++ b/JEUX_SERPENT/main.c @@ -5,201 +5,192 @@ #include #define CYCLE 10000L -/* Variables */ +/*variables*/ -int seconde = 0; -int minute = 0; -int seconde_actuel = 0; -int old_seconde = 0; +/*timer*/ +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; +/*fin de jeu*/ +int go_on=1; +/*serpent*/ int serpent; int x = 600; int y = 400; -int direction = 4; +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 segment=10; +int i=0; int pos_x[60]; int pos_y[60]; int old_x[60]; int old_y[60]; -int pomme, p, pp; -int pomx[5]; -int pomy[5]; +/*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"); -void GenererPomme(int indice) { - do { - pomx[indice] = ((rand() % 58) + 1) * 20; - pomy[indice] = ((rand() % 35) + 1) * 20; - } while (pomx[indice] < 20 || pomx[indice] > 1160 || pomy[indice] < 20 || pomy[indice] > 700); - - printf("Nouvelle pomme à la position : (%d, %d)\n", pomx[indice], pomy[indice]); - - AfficherSprite(pomme, pomx[indice], pomy[indice]); -} - - -void DessinerScene() { - ChoisirCouleurDessin(CouleurParComposante(0, 100, 0)); - RemplirRectangle(20, 20, 1160, 700); - - snprintf(timer, 6, "%02d:%02d", minute, seconde); - ChoisirCouleurDessin(CouleurParComposante(0, 255, 0)); - pomme = ChargerSprite("pomme.png"); - serpent = ChargerSprite("serpent.png"); - ChoisirCouleurDessin(CouleurParComposante(255, 255, 255)); - EcrireTexte(10, 760, timer, 2); - - srand(time(NULL)); - for (p = 0; p < 5; p++) { - GenererPomme(p); - } - - 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 (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); +} -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; + } + } } -void Update_Serpent() { - ChoisirCouleurDessin(CouleurParComposante(0, 100, 0)); - RemplirRectangle(20, 20, 1160, 700); - AfficherSprite(serpent, pos_x[0], pos_y[0]); - - for (i = 1; i < segment; i++) { - pos_x[i] = old_x[i - 1]; - pos_y[i] = old_y[i - 1]; - AfficherSprite(serpent, pos_x[i], pos_y[i]); - } - - if (i > segment) { - pos_x[i] = 0; - pos_y[i] = 0; - segment--; - } - - old_x[0] = pos_x[0]; - old_y[0] = pos_y[0]; - - for (i = 1; i < segment; i++) { - old_x[i] = pos_x[i]; - old_y[i] = pos_y[i]; - } +/*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); } -void Terrain() { - if (pos_x[0] > 1180 || pos_x[0] < 20 || pos_y[0] < 20 || pos_y[0] > 700) { - go_on = 0; - ChoisirCouleurDessin(CouleurParComposante(255, 0, 0)); - EcrireTexte(500, 400, "Game Over", 2); - } +/*Apparition aléatoire des pommes*/ +void Pomme(){ + + for (pp = 0; pp < 5; ++pp) + { + AfficherSprite(pomme, pommex[pp], pommey[pp]); + } } - -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(); - } - } - } -} - - -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; - case XK_p: - direction = 0; - break; - } - } -} - - -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); -} - - - -int main() { +/*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; + CreerFenetre(350,100,1200,800); + EffacerEcran(CouleurParComposante(0,0,0)); + suivant = Microsecondes()+CYCLE; + old_seconde=(suivant/1000000)%10; DessinerScene(); - while (go_on) { - Timer(); - Controle(); - Serpent(); - } - for (p = 0; p < 5; p++) { - AfficherSprite(pomme, pomx[p], pomy[p]); - } - usleep(3000000); + + /*Boucle Principale du Programme*/ + while(go_on){ + Timer(); + Controle(); + Serpent(); + Pomme(); + } + + /* fermeture de la fenêtre si ECHAP pressé*/ FermerGraphique(); - return 0; - -} \ No newline at end of file + return EXIT_SUCCESS; +}