From 41e8d812da11dbbf237d1e7ba15d3f91c540ecb2 Mon Sep 17 00:00:00 2001 From: aissi Date: Thu, 7 Dec 2023 14:35:39 +0100 Subject: [PATCH] Programmme fini mais en 1 fichier --- SAE_semestre1/src/game.c | 224 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 SAE_semestre1/src/game.c diff --git a/SAE_semestre1/src/game.c b/SAE_semestre1/src/game.c new file mode 100644 index 0000000..89c8635 --- /dev/null +++ b/SAE_semestre1/src/game.c @@ -0,0 +1,224 @@ +#include +#include +#include +#include +#include +#define CYCLE 10000L + + +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; +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 last_direction = 0; + +int p=0; +int pp=0; +int pomme, pommex[5], pommey[5]; +int fond; + +int nombre; +char score[4]; + +void DessinerScene(){ + snprintf(timer,6,"%02d:%02d", minute ,seconde); + ChoisirCouleurDessin(CouleurParComposante(91,222,122)); + RemplirRectangle(20,20,1160,700); + ChoisirCouleurDessin(CouleurParComposante(255,255,255)); + EcrireTexte(10,760,timer,2); + serpent=ChargerSprite("../img/serpent.png"); + fond = ChargerSprite("../img/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_x[i]=pos_x[i]; + old_y[i]=pos_y[i]; + } + srand(time(NULL)); + pomme=ChargerSprite("../img/pomme.png"); + for (p = 0; p < 5; p++) { + pommex[p] = ((rand() % (55)+1)*20); + pommey[p] = ((rand() % (35)+1)*20); + AfficherSprite(pomme, pommex[p],pommey[p]); + } + +} + +void Update_Timer(){ + snprintf(timer,6,"%02d:%02d", minute, seconde); + ChoisirCouleurDessin(CouleurParComposante(0,0,0)); + RemplirRectangle(10,700,1200,800); + ChoisirCouleurDessin(CouleurParComposante(255,255,255)); + EcrireTexte(50,760,timer,2); +} + +void Update_Serpent(){ + AfficherSprite(fond, pos_x[segment-1], pos_y[segment-1]); + AfficherSprite(serpent, pos_x[0], pos_y[0]); + for (i=1 ; i1140 || pos_x[0]<=20) + go_on=0; + if (pos_y[0]<40 || pos_y[0] >=680) + go_on=0; + + for (i = 1; i < segment; i++) { + if (pos_x[0] == pos_x[i] && pos_y[0] == pos_y[i]) + go_on = 0; + } +} + + +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: + if (last_direction != 4) { + direction = 3; + last_direction = 3; + } + break; + case XK_Right: + if (last_direction != 3) { + direction = 4; + last_direction = 4; + } + break; + case XK_Up: + if (last_direction != 2) { + direction = 1; + last_direction = 1; + } + break; + case XK_Down: + if (last_direction != 1) { + direction = 2; + last_direction = 2; + } + break; + case XK_Escape: + direction = 0; + go_on = 0; + break; + case XK_p: + direction = 0; + } + } +} + +void Serpent() { + if (direction == 1 && direction != 2 ){ + pos_y[0]=old_y[0]-20; + } + if (direction == 2 && direction != 1) { + pos_y[0]=old_y[0]+20; + } + if (direction == 3 & direction != 4) { + pos_x[0]=old_x[0]-20; + } + if (direction == 4 && direction != 3) { + pos_x[0]=old_x[0]+20; + } + + for(p=0; p<6; p++){ + if(pommex[p]==pos_x[0] && pommey[p]==pos_y[0]){ + segment+=2; + pommex[p] = ((rand() % (60)+1)*20); + pommey[p] = ((rand() % (27)+1)*20); + } + } + +Update_Serpent(); +Terrain(); +usleep(100000); + +} + +void Pomme(){ + + for(pp = 0; pp < 5; ++pp){ + AfficherSprite(pomme, pommex[pp], pommey[pp]); + } +} +void Score(){ + nombre= (segment-2)*10; + snprintf(score,4,"%04d0", nombre); + ChoisirCouleurDessin(CouleurParNom("black")); + RemplirRectangle(1100,730,1200,800); + ChoisirCouleurDessin(CouleurParNom("white")); + EcrireTexte(1100,780,score,2); +} + +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(); + Score(); + Controle(); + Serpent(); + Pomme(); + } + FermerGraphique(); + return EXIT_SUCCESS; +} \ No newline at end of file