From 2f468de07e0d8f8dc16b5df38f3e56d957dcd4f6 Mon Sep 17 00:00:00 2001 From: rohaut Date: Tue, 28 Nov 2023 23:04:54 +0100 Subject: [PATCH] Affichage des pommes! --- JEUX_SERPENT/main.c | 199 --------------------------------------- JEUX_SERPENT/main2.c | 198 ++++++++++++++++++++++++++++++++++++++ JEUX_SERPENT/terrain.jpg | Bin 0 -> 10505 bytes JEUX_SERPENT/timer.c | 20 ---- 4 files changed, 198 insertions(+), 219 deletions(-) delete mode 100644 JEUX_SERPENT/main.c create mode 100644 JEUX_SERPENT/main2.c create mode 100644 JEUX_SERPENT/terrain.jpg delete mode 100644 JEUX_SERPENT/timer.c diff --git a/JEUX_SERPENT/main.c b/JEUX_SERPENT/main.c deleted file mode 100644 index 07b6fe9..0000000 --- a/JEUX_SERPENT/main.c +++ /dev/null @@ -1,199 +0,0 @@ -#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; -} diff --git a/JEUX_SERPENT/main2.c b/JEUX_SERPENT/main2.c new file mode 100644 index 0000000..fe90e17 --- /dev/null +++ b/JEUX_SERPENT/main2.c @@ -0,0 +1,198 @@ +#include +#include +#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; +int t; + +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]; + + +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() { + snprintf(timer, 6, "%02d:%02d", minute, seconde); + ChoisirCouleurDessin(CouleurParComposante(255, 255, 255)); + ChargerImageFond("terrain.jpg"); + 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++) { + GenererPomme(p); + } +} + + +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_Serpent() { + + 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]); + } + + 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]; + } +} + +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); + } +} + + +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() { + InitialiserGraphique(); + 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); + FermerGraphique(); + return 0; +} diff --git a/JEUX_SERPENT/terrain.jpg b/JEUX_SERPENT/terrain.jpg new file mode 100644 index 0000000000000000000000000000000000000000..85d5d8b997178c1c3b25dababd5e01ddd2a531e6 GIT binary patch literal 10505 zcmeH`OK;Oa5XaXz4-=&YOFeL0xfejhuQW|;HAHzdA`(VbsRUQo-Zob1hir$qJ@>nS z_zE28fe*ps)Efr`AHl3c9#z{Q4jgABTeG8?|IYq)HvODlq6fQ)bA-@f@ECDuY3UEd z_r})f6fr1A!+nI(OI94laiB|*7m23r9}>~>T`4gGNfBiU?X;4>v_>SxhveAtn!>LS z9|i2#P2p9|kd2^AhR(CIki0y5abTT|EX@{LPw`HoCvM=9*u;r@;zfGW6sF=j^|P=f z;Au)cY6|UaSNz)8!(Bflcw3Y!mMqtBT@#hzQ5fp+@m2yU>Dy_MCKM8o)ds_SL|rm|7IPnP}ODjXf021ME?kv|SCLen?1 z;y~|)#Ekv$!1qt)6!(UH>_6OCch`hr2?T%u5C8%|00;m9AOHk_01yBIKmZ5;0U!VbfB+Bx0zd!= f00AHX1b_e#00KY&2mk>f00e*l5cp37TIrYH8c8F+ literal 0 HcmV?d00001 diff --git a/JEUX_SERPENT/timer.c b/JEUX_SERPENT/timer.c deleted file mode 100644 index 3545c55..0000000 --- a/JEUX_SERPENT/timer.c +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include -#include - -/*pas d'affichage prévu*/ -/*timer de base (à mettre plus tard dans un fichier makefile)*/ -int main(void){ - int seconde=0; - int minute=0; - - while(1) { - sleep(1); - seconde=seconde+1; - if(seconde>=60) { - seconde=0; - minute=minute+1; - } - } - return 0; -} \ No newline at end of file