From a549f7df3aefdcab7d554f9c7b6a6fafaff0028a Mon Sep 17 00:00:00 2001 From: khadir Date: Fri, 22 Dec 2023 14:07:57 +0100 Subject: [PATCH] voila --- .#makefile | 1 + Makefile | 29 ++++++++++ Makefile~ | 29 ++++++++++ a.out | Bin 16088 -> 0 bytes README.md => boucle.c~ | 0 deplacement.c | 89 ----------------------------- deplacement.h | 6 -- main.c | 110 ++++++++++++++++++++++++++++++++++++ main.o | Bin 0 -> 9728 bytes makefile | 11 ---- menu_terrain.c | 86 ++++++++++++++++++++++++++++ menu_terrain.h~ | 18 ++++++ menu_terrain.o | Bin 0 -> 7096 bytes pastille.h~ | 17 ++++++ pastille.o | Bin 0 -> 5744 bytes pomme.c | 102 ++++++++++++++++----------------- pomme.h | 17 ++++++ pomme.o | Bin 0 -> 5744 bytes pomme.png | Bin 636 -> 4450 bytes serpent.c | 124 +++++++++++++++++++++++------------------ serpent.h | 19 ++++++- serpent.h~ | 21 +++++-- serpent.o | Bin 0 -> 6688 bytes snake | Bin 0 -> 30400 bytes temp.c~ | 0 temps_et_score.c | 29 ++++++++++ temps_et_score.h | 8 +++ temps_score.h~ | 8 +++ temps_score.o | Bin 0 -> 5592 bytes terrain.c | 94 +++++++++++++++++++++++++++---- terrain.h | 21 +++++-- terrain.png | Bin 0 -> 37288 bytes 32 files changed, 605 insertions(+), 234 deletions(-) create mode 120000 .#makefile create mode 100644 Makefile create mode 100644 Makefile~ delete mode 100755 a.out rename README.md => boucle.c~ (100%) delete mode 100644 deplacement.c delete mode 100644 deplacement.h create mode 100644 main.c create mode 100644 main.o delete mode 100644 makefile create mode 100644 menu_terrain.c create mode 100644 menu_terrain.h~ create mode 100644 menu_terrain.o create mode 100644 pastille.h~ create mode 100644 pastille.o create mode 100644 pomme.h create mode 100644 pomme.o create mode 100644 serpent.o create mode 100755 snake create mode 100644 temp.c~ create mode 100644 temps_et_score.c create mode 100644 temps_et_score.h create mode 100644 temps_score.h~ create mode 100644 temps_score.o create mode 100644 terrain.png diff --git a/.#makefile b/.#makefile new file mode 120000 index 0000000..de1983a --- /dev/null +++ b/.#makefile @@ -0,0 +1 @@ +khadir@salle222-13.168261:1703162703 \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..38bdbb2 --- /dev/null +++ b/Makefile @@ -0,0 +1,29 @@ +but : snake + +OFILES = main.o \ + serpent.o \ + pomme.o \ + terrain.o\ + temps_et_score.o + +CC = gcc + +CFLAGS = -Wall -ansi -pedantic -g + +serpent.o : serpent.h terrain.h temps_et_score.h + +pomme.o : pomme.h terrain.h serpent.h + +main.o : serpent.h pomme.h temps_et_score.h terrain.h + +temps_et_score.o : temps_score.h + +terrain.o : menu_terrain.h + +snake : $(OFILES) + $(CC) $(CFLAGS) -o snake $(OFILES) -lgraph + +clean : + -rm -f $(OFILES) snake + +.PHONY : but clean diff --git a/Makefile~ b/Makefile~ new file mode 100644 index 0000000..82bff70 --- /dev/null +++ b/Makefile~ @@ -0,0 +1,29 @@ +but : snake + +OFILES = main.o \ + serpent.o \ + pastille.o \ + menu_terrain.o\ + temps_score.o + +CC = gcc + +CFLAGS = -Wall -ansi -pedantic -g + +serpent.o : serpent.h menu_terrain.h temps_score.h + +pastille.o : pastille.h menu_terrain.h serpent.h + +main.o : serpent.h pastille.h temps_score.h menu_terrain.h + +temps_score.o : temps_score.h + +menu_terrain.o : menu_terrain.h + +snake : $(OFILES) + $(CC) $(CFLAGS) -o snake $(OFILES) -lgraph + +clean : + -rm -f $(OFILES) snake + +.PHONY : but clean diff --git a/a.out b/a.out deleted file mode 100755 index f2f82021e908884ef8d2e517dc1458f53a08959b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16088 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 S(^B@Wcw>V0QICO#75@f4#f^mk diff --git a/README.md b/boucle.c~ similarity index 100% rename from README.md rename to boucle.c~ diff --git a/deplacement.c b/deplacement.c deleted file mode 100644 index 902f3f2..0000000 --- a/deplacement.c +++ /dev/null @@ -1,89 +0,0 @@ -#include -#include -#include -#include -#include - -#define LARGEUR 40 -#define HAUTEUR 60 -#define TAILLE_MAX 100 - - - int x, y; - -input(); - - if (_kbhit()) { - switch (_getch()) { - case "XK_Right": - x ++; - break; - case "XK_Left": - x --; - break; - case "XK_Up": - y ++; - break; - case "XK_Down": - y --; - gameOver = 1; - break; - } - } -} - -void logique() { - int i; - int gameOver,y,x, queueX[], queueY[], longueurQueue[]; - int prevX = queueX[0]; - int prevY = queueY[0]; - int prev2X, prev2Y; - queueX[0] = x; - queueY[0] = y; - for (i = 1; i < longueurQueue; i++) { - prev2X = queueX[i]; - prev2Y = queueY[i]; - queueX[i] = prevX; - queueY[i] = prevY; - prevX = prev2X; - prevY = prev2Y; - } - switch (_getch()) { - - gameOver = 1; - break; - case "XK_Right": - x++; - break; - case "XK_Left": - x--; - break; - case "XK_Up": - y++; - break; - case "XK_Down": - y--; - } - -} - -int main(void) { - int score; - int gameOver; - InitialiserGraphique(); - CreerFenetre(0,0,800,500); - - srand(time(NULL)); - initialiser(); - while (gameOver != 1) { - dessiner(); - input(); - logique(); - Sleep(50); - } - printf("Game Over!\n"); - printf("Votre score est: %d\n", score); - - } - FermerGraphique(); -} \ No newline at end of file diff --git a/deplacement.h b/deplacement.h deleted file mode 100644 index 482ac61..0000000 --- a/deplacement.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef DEPLACEMENT_H -#define DEPLACEMENT_H -void input() -void logique() - -#endif /*DEPLACEMENT_H*/ diff --git a/main.c b/main.c new file mode 100644 index 0000000..4e83479 --- /dev/null +++ b/main.c @@ -0,0 +1,110 @@ +#include +#include +#include +#include +#include "menu_terrain.h" +#include "temps_score.h" +#include "serpent.h" +#include "pastille.h" +#define CYCLE 1000000L +#define MAX_LONGUEUR 100 + + +int main(){ + int rejouer; + InitialiserGraphique(); + CreerFenetre(350, 100, LARGEUR_FENETRE, HAUTEUR_FENETRE); + srand(time(NULL)); + do{ + unsigned long suivant; + unsigned int vitesse_serpent = VITESSE_INITIAL; + int n = 0, minutes, secondes, score = 0, continuer; + char texte[20]; + int nbr_pastille = 5, gameover, i, direction = 1, direction_avant = 1, longSerpent = TAILLE_SERPENT_INITIAL, max_longuer = MAX_LONGUEUR; + Pastille *pomme = (Pastille *) malloc(nbr_pastille * sizeof(Pastille)); + Segment *serpent = (Segment *) malloc(MAX_LONGUEUR * sizeof(Segment)); + if (pomme == NULL || serpent == NULL) + { + printf("Erreur d'allocation de m�moire.\n"); + return EXIT_FAILURE; + } + rejouer = 2; + EffacerEcran(CouleurParNom("black")); + Terrain(); + Creation_Serpent(serpent, longSerpent); + Afficher_Serpent(serpent, longSerpent, direction); + Creation_Pastille(NBR_PASTILLE_INITIAL, pomme, longSerpent, serpent); + Afficher_Pastille(NBR_PASTILLE_INITIAL, pomme); + do{ + gameover = 2; + if (longSerpent >= MAX_LONGUEUR){ + serpent = (Segment*) realloc(serpent,(max_longuer+MAX_LONGUEUR)); + max_longuer += MAX_LONGUEUR; + } + /*Temps ecoul� debut*/ + if (Microsecondes() > suivant){ + suivant = Microsecondes() + CYCLE; + n++; + minutes = n / 60; + secondes = n % 60; + Afficher_Temps(minutes, secondes, texte); + } + /*Temps ecoul� fin */ + if (ToucheEnAttente()){ + switch (Touche()){ + case XK_Right: + direction = 1; + break; + case XK_Left: + direction = -1; + break; + case XK_Up: + direction = 2; + break; + case XK_Down: + direction = -2; + break; + case XK_space: + continuer = 2; + Pause(texte, minutes, secondes, score, &continuer); + if (continuer == 0){ + FermerGraphique(); + return EXIT_SUCCESS; + } + Afficher_Pastille(NBR_PASTILLE_INITIAL, pomme); + Afficher_Serpent(serpent, longSerpent, direction); + } + } + if (direction==direction_avant*(-1)){ + direction=direction_avant; + }else{ + direction_avant=direction; + } + Deplacer_Serpent(&longSerpent, serpent, direction, vitesse_serpent); + for (i = 0; i < NBR_PASTILLE_INITIAL; i++){ + /*Mise a zero du score*/ + ChoisirCouleurDessin(CouleurParNom("white")); + sprintf(texte, "Score : %3d", score); + EcrireTexte(825, 685, texte, 2); + if (serpent[i].x == pomme[i].x && serpent[i].y == pomme[i].y) + { + longSerpent += 2; + Validation_Coordonne( NBR_PASTILLE_INITIAL, pomme, longSerpent, serpent, &pomme[i]); + score = score + 5; + if (score % 40 == 0 && vitesse_serpent > 10U){ + vitesse_serpent -= 5U; + } + Afficher_Pastille(NBR_PASTILLE_INITIAL, pomme); + Afficher_Score(score, texte); + } + } + Contoure_Terrain(); + Mort_Serpent( longSerpent, serpent, score, minutes, secondes, texte, &rejouer, &gameover); + }while (gameover); + free(pomme); + free(serpent); + }while(rejouer); + + FermerGraphique(); + return EXIT_SUCCESS; +} diff --git a/main.o b/main.o new file mode 100644 index 0000000000000000000000000000000000000000..3906dcc0d32fefb7411bf453f86374e5a8455439 GIT binary patch literal 9728 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 N|9@hlv|qUX{{_36?lS-Y literal 0 HcmV?d00001 diff --git a/makefile b/makefile deleted file mode 100644 index 1c4be5e..0000000 --- a/makefile +++ /dev/null @@ -1,11 +0,0 @@ -terrain: terrain.o serpent.o deplacement.o - gcc -o terrain terrain.o serpent.o deplacement.o - -terrain.o: terrain.c serpent.h deplacement.h - gcc -c terrain.c - - serpent.o: serpent.c serpent.h - gcc -c serpent.c - - deplacement.o: deplacement.c deplacement.h - gcc -c deplacement.c diff --git a/menu_terrain.c b/menu_terrain.c new file mode 100644 index 0000000..86285a6 --- /dev/null +++ b/menu_terrain.c @@ -0,0 +1,86 @@ +#include +#include +#include +#include "menu_terrain.h" + +/*Fonction initialisant le terrain de jeux*/ +void Terrain(){ + int i, j; + + for (i = CONTOURE_H; i < LIGNES + CONTOURE_H; i++) + { + for (j = CONTOURE_L; j < COLONNES + CONTOURE_L; j++){ + ChoisirCouleurDessin(CouleurParComposante(0, 217, 87)); + RemplirRectangle(j * TAILLE_CASE, i * TAILLE_CASE, TAILLE_CASE, TAILLE_CASE); + } + } +} + +/*Fonction dessinnant la bordure du terrain en noir pour enlever les block vert qui apparaissent*/ +void Contoure_Terrain(){ + int i, j; + for (i = 0; i < CONTOURE_H; i++){ + for (j = 0; j < COLONNES; j++){ + ChoisirCouleurDessin(CouleurParNom("black")); + RemplirRectangle(j * TAILLE_CASE, i * TAILLE_CASE, TAILLE_CASE, TAILLE_CASE); + } + } + for (j = 0; j < CONTOURE_L; j++){ + for (i = 0; i < LIGNES; i++){ + ChoisirCouleurDessin(CouleurParNom("black")); + RemplirRectangle(j * TAILLE_CASE, i * TAILLE_CASE, TAILLE_CASE, TAILLE_CASE); + } + } + for (j = COLONNES + CONTOURE_L; j < CONTOURE_L; j++){ + for (i = 0; i < LIGNES; i++){ + ChoisirCouleurDessin(CouleurParNom("black")); + RemplirRectangle(j * TAILLE_CASE, i * TAILLE_CASE, TAILLE_CASE, TAILLE_CASE); + } + } + +} + + +/*Fonction qui affiche le menu pause*/ +void Pause(char* texte, int minutes, int secondes, int score, int* continuer){ + EcrireTexte(10,10,"pause !",2); + while(*continuer == 2){ + if (ToucheEnAttente()){ + switch(Touche()){ + case XK_space : + *continuer = 1; + break; + case XK_Escape : + *continuer = 0; + break; + } + } + } + Terrain(); +} + +/*Fonction qui affiche le menu perdu*/ +void Perdu(char *texte, int score, int minutes, int secondes, int* rejouer) +{ + EffacerEcran(CouleurParNom("black")); + EcrireTexte(10,100,"Perdu",2); + /*Afficher le score sur l'image*/ + ChoisirCouleurDessin(CouleurParNom("black")); + sprintf(texte, "%3d", score); + EcrireTexte(550, 420, texte, 2); + /*affichage du timer au menu*/ + sprintf(texte, "%02d:%02d", minutes, secondes); + EcrireTexte(550, 485, texte, 2); + while(*rejouer == 2){ + if (ToucheEnAttente()){ + switch(Touche()){ + case XK_Return : + *rejouer = 1; + break; + case XK_Escape : + *rejouer = 0; + break; + } + } + } +} \ No newline at end of file diff --git a/menu_terrain.h~ b/menu_terrain.h~ new file mode 100644 index 0000000..db5498d --- /dev/null +++ b/menu_terrain.h~ @@ -0,0 +1,18 @@ +#ifndef MENU_TERRAIN_H +#define MENU_TERRAIN_H + +void Terrain(); +void Contoure_Terrain(); +void Start(int* jouer); +void Pause(char* texte, int minutes, int secondes, int score, int* continuer); +void Perdu(char *texte, int score, int minutes, int secondes, int* rejouer); + +#define LARGEUR_FENETRE 1050 +#define HAUTEUR_FENETRE 750 +#define TAILLE_CASE 15 +#define COLONNES 60 +#define LIGNES 40 +#define CONTOURE_H 2 +#define CONTOURE_L 5 + +#endif /* MENU_TERRAIN_H */ diff --git a/menu_terrain.o b/menu_terrain.o new file mode 100644 index 0000000000000000000000000000000000000000..6143d7de31d2cfdc8e575a3d6d46cbc03750405e GIT binary patch literal 7096 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 literal 0 HcmV?d00001 diff --git a/pastille.h~ b/pastille.h~ new file mode 100644 index 0000000..04bc2fd --- /dev/null +++ b/pastille.h~ @@ -0,0 +1,17 @@ +#include "serpent.h" +#ifndef PASTILLE_H +#define PASTILLE_H + +typedef struct +{ + int x; + int y; +} Pastille; + +void Creation_Pastille(int z, Pastille pomme[], int longSerpent, Segment serpent[]); +void Afficher_Pastille(int z, Pastille pomme[]); +void Validation_Coordonne(int z, Pastille pomme[], int longSerpent, Segment serpent[], Pastille* nouvelle_pomme); + +#define NBR_PASTILLE_INITIAL 5 + +#endif /* PASTILLE_H */ diff --git a/pastille.o b/pastille.o new file mode 100644 index 0000000000000000000000000000000000000000..805c8ea3d399f0fd11f5b727c8ac36ea5ab32467 GIT binary patch literal 5744 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 literal 0 HcmV?d00001 diff --git a/pomme.c b/pomme.c index ef5e01e..50c6d96 100644 --- a/pomme.c +++ b/pomme.c @@ -1,58 +1,54 @@ -#include #include #include -#define delta 1000000L - -void DessinerScene(int sprite,int x,int y,int n) +#include +#include +#include "pomme.h" +#include "terrain.h" +#include "serpent.h" + +/*Fonction permettant l'initialisation d'un nombre donnée en parametre de pastille*/ +void Creation_Pastille(int nombre, Pastille pomme[], int longSerpent, Segment serpent[]) { - char buf[100]; - ChoisirEcran(1); - CopierZone(2,1,0,0,800,500,0,0); - snprintf(buf,100,"temps : %05d",n); - EcrireTexte(10,20,buf,0); - AfficherSprite(sprite,x,y); - CopierZone(1,0,0,0,800,500,0,0); + int i; + for (i = 0; i < nombre; i++) + { + pomme[i].x = rand() % (COLONNES) * TAILLE_CASE + CONTOURE_L * TAILLE_CASE; + pomme[i].y = rand() % (LIGNES) * TAILLE_CASE + (CONTOURE_H * TAILLE_CASE); + Validation_Coordonne( i, pomme, longSerpent, serpent, &pomme[i]); + } } - -int main() -{ - int pomme; - int x,y,old_x,old_y; - int n; - unsigned long suivant; - int go_on=1; - - InitialiserGraphique(); - CreerFenetre(0,0,800,500); - ChoisirEcran(2); - ChargerImageFond("pixilart-drawing(2)(1).jpg"); - ChargerImageFond("pomme.png"); - x=y=old_x=old_y=10; - n=0; - DessinerScene(pomme,x,y,0); - suivant=Microsecondes()+delta; - - while(go_on) - { - if (SourisCliquee()) go_on=0; - else - { - if (Microsecondes()>suivant) - { - n++; - DessinerScene(pomme,x,y,n); - suivant=Microsecondes()+delta; - } - SourisPosition(); - x=_X; - y=_Y; - if (x!=old_x || y!=old_y) - { - DessinerScene(pomme,x,y,n); - old_x=x; - old_y=y; - } - } - } - FermerGraphique(); + +/*Fonction validant les coordonnées des pastilles*/ +void Validation_Coordonne(int nombre, Pastille pomme[], int longSerpent, Segment serpent[], Pastille* nouvelle_pomme){ + int coordonee_ok, j; + Pastille pastilles; + do{ + coordonee_ok = 0; + pastilles.x = (rand() % COLONNES) * TAILLE_CASE + (CONTOURE_L * TAILLE_CASE); + pastilles.y = (rand() % LIGNES) * TAILLE_CASE + (CONTOURE_H * TAILLE_CASE); + for (j = 0; j < longSerpent; j++){ + if (nouvelle_pomme->x == serpent[j].x && pomme->y == serpent[j].y){ + coordonee_ok = 1; + break; + } + } + if (coordonee_ok == 0){ + for (j = 0; j < nombre; j++){ + if (nouvelle_pomme->x == pomme[j].x && nouvelle_pomme-> y== pomme[j].y){ + coordonee_ok = 1; + break; + } + } + } + }while (coordonee_ok); + nouvelle_pomme->x =pastilles.x; + nouvelle_pomme->y =pastilles.y; } + +/*Fonction permettant l'affichage d'un nombre donnée de pastilles*/ +void Afficher_Pastille(int n,Pastille pomme[]){ + int i; + for (i = 0; i < n;i++){ + ChargerImage("pomme.png", pomme[i].x, pomme[i].y, 26,26, TAILLE_CASE, TAILLE_CASE); + } +} \ No newline at end of file diff --git a/pomme.h b/pomme.h new file mode 100644 index 0000000..04bc2fd --- /dev/null +++ b/pomme.h @@ -0,0 +1,17 @@ +#include "serpent.h" +#ifndef PASTILLE_H +#define PASTILLE_H + +typedef struct +{ + int x; + int y; +} Pastille; + +void Creation_Pastille(int z, Pastille pomme[], int longSerpent, Segment serpent[]); +void Afficher_Pastille(int z, Pastille pomme[]); +void Validation_Coordonne(int z, Pastille pomme[], int longSerpent, Segment serpent[], Pastille* nouvelle_pomme); + +#define NBR_PASTILLE_INITIAL 5 + +#endif /* PASTILLE_H */ diff --git a/pomme.o b/pomme.o new file mode 100644 index 0000000000000000000000000000000000000000..5bb2d0a00909ae2a33470cb7c69769208fc53c11 GIT binary patch literal 5744 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 literal 0 HcmV?d00001 diff --git a/pomme.png b/pomme.png index aa087cbbcb43f2f519e378f8b0479657fed2dc72..bdfc3dec1276c680405d0f774c1de2be4f749ae0 100644 GIT binary patch literal 4450 zcmeHKdvFuS89xbvjIoOWJGf3tH0LnI;L|-M%hK7h<65$;fNV!r!7zdLbPxMtJ&wDx zEt5DyNx?v9ngo&#i78Bmme<7X5Xg(zOhUj7F_0Oifk50)N^v_5&=@jpT^Rb^NjCB{ zGab()|M@hl{dV{F{dV`a-+t0hW*)9Wo@KajMyfxRG!F@jARj7TQb zT~H{nv!UJ(MeIz>)eE-vr0Jh(ur%h;+UxVznJEiNSgbbiCnzgTQZz-GNh@tFrbzyrX63t zhCX*V-Lp6AiSPU$)ERP_FV7#hc8_^6Z+%($CocNEvv}7ZCKs1I-tHV`^MsQ zEcBGr{?K5L^7f6gN1B#y7ruTN@xOIy$-;uG!v{it%V9F=J+roM=lgwuyxyUqd4}FE zj<>&jx2OEv+7-Xg&C1#|r=N&i&b++cfAP|LwGT4<^7&;y{57$!;4c9=|vr@a|z*Nm@k_{&odmDCJPO)HzSY)#)!nvHMl++9qsxRsXs`7}#+$twpv^8EXL2*J1*Y)~8gOK3J0u`paL#9QJKNjop3v^*{`Y%{N#Lwutcb)h$o z97W9{=R%hi`3b*N$v27BYh=EDO-+zp)66ZolYlCP&h?lfWVaYsLI5#sFJTyBsko>!pfqgim|9!<77gy7S)BKFm4`QUqtfz z$LOOu@;%-J*|9H%}=G^*fD>p zMGouR;aHpx^AUh5Fe^E3O6|gpd1w+eiV;co0ny7Xt2MyyMWL zd)L8$^80CbjBU}D=X1MIZGM`Iu_8z7rqgb-k|9dK7`u(bY*vB9LIUf=tZXRcu(AS4 zk)aeSUsO?*;GLYq;YgvVl|_h3 zCY-t|jfw**J7MQ+Rx62dq%(xs2%8Oa0tv=i1&7VnxR&gViYO9HC*)P)&U00$SkM2xn???HoNgs)c_O--_xuu?XM-AWM-lCYX5(9SaSc0bv;}PJux0hrQ61GS8?nIT(wDUFcZS9UJz;b>bM6aWg6p zq+@9~IGTnR5hP6{7NF7jW1J|o|39>LdCaANha;~R6_~$W?@HXLdVY1Hm1u@V{VJKw z`lX;5Hn9bTY2`V6oxqhCVw;#~BM;dl8Lp%K;x~jsk)1Ch7}koBEJHywkp$*+hKewO zVK@h6F9vbh@$5=WP}>-puV@4vK`RJP{RhgtKtHI0@#wZDUONR43?nIwqDBRyl7ivM z4dYtQ7~OFx{y&VT9a1Ad7)J#h|-{F%yi|=p-pq`v$Li$e1H7VDG z6qpcrGP)+^nven$0#8QQw;pZdtb5hXLSAIPYu&I%ilZ0UN}^A>eZWP ztAKgj^TDD>V4)mU1u7p=Sf+V4J{nSW(wLA#p$!0u}!ht6L!mF&NnJ0v`D qvE*tebMfnsjuwtvB{bIVEHQp{{juRfCNfhS^Lc9A-9P&2y8i-oX!Z60 literal 636 zcmeAS@N?(olHy`uVBq!ia0vp^DImU^4S`aSW-5 zdppC>i#bt*Eq=oWk4$wjr>-X)W?fqqI+kA)ev#=Su*P+^jG`u!SW^1TLrzon|45A$ z+}tvuGBHShw!X3T?$vugG%H#lGi6k-Z>W57@?_1Nnhd+z?@Rr~+eMn;^F z;?gvF_r2^<=C5CmZ}YeBF8uUq+O{cET0T zojcd #include #include -#define delta 1000000L - -void DessinerScene(int sprite,int x,int y,int n) -{ - char buf[100]; - ChoisirEcran(1); - CopierZone(2,1,0,0,800,500,0,0); - snprintf(buf,100,"temps : %05d",n); - EcrireTexte(10,20,buf,0); - AfficherSprite(sprite,x,y); - CopierZone(1,0,0,0,800,500,0,0); +#include +#include "serpent.h" +#include "terrain.h" +#include "temps_et_score.h" + +/*Fonction permettant de créer un serpent de base avec une taille donnée*/ +void Creation_Serpent(Segment serpent[], int taille){ + int i; + for (i = 0; i < taille; i++) + { + serpent[i].x = (COLONNES / 2) * TAILLE_CASE; + serpent[i].y = (LIGNES / 2) * TAILLE_CASE; + } } - -int main() + +/*Fonction permettant d'afficher le serpent avec une taille donnée*/ +void Afficher_Serpent(Segment serpent[], int taille, int rotation) { - int serpent; - int x,y,old_x,old_y; - int n; - unsigned long suivant; - int go_on=1; - - InitialiserGraphique(); - CreerFenetre(0,0,800,500); - ChoisirEcran(2); - ChargerImageFond("serpent.jpg"); - ChargerImageFond("serpent.png"); - x=y=old_x=old_y=10; - n=0; - DessinerScene(serpent,x,y,0); - suivant=Microsecondes()+delta; - - while(go_on) - { - if (SourisCliquee()) go_on=0; - else - { - if (Microsecondes()>suivant) - { - n++; - DessinerScene(serpent,x,y,n); - suivant=Microsecondes()+delta; - } - SourisPosition(); - x=_X; - y=_Y; - if (x!=old_x || y!=old_y) - { - DessinerScene(serpent,x,y,n); - old_x=x; - old_y=y; - } - } - } - FermerGraphique(); + int i; + ChoisirCouleurDessin(CouleurParComposante(252, 220, 17)); + for(i=0; i 0; i--) + { + serpent[i] = serpent[i - 1]; + } + + switch (direction) + { + case 1: + serpent[0].x += TAILLE_CASE; + break; + case -1: + serpent[0].x -= TAILLE_CASE; + break; + case 2: + serpent[0].y -= TAILLE_CASE; + break; + case -2: + serpent[0].y += TAILLE_CASE; + break; + } + Afficher_Serpent(serpent, *longSerpent, direction); + Attendre(vitesse_serpent); +} + +/*Fonction l'emplacement de la tête du serpent pour la mort*/ +void Mort_Serpent(int longSerpent, Segment serpent[], int score, int minutes, int secondes, char texte[], int* rejouer, int* gameover){ + int i; + if (serpent[0].x < 5 * TAILLE_CASE || serpent[0].x >= (COLONNES * TAILLE_CASE) + 5 * TAILLE_CASE || serpent[0].y < CONTOURE_H * TAILLE_CASE || serpent[0].y >= (LIGNES * TAILLE_CASE) + 2 * TAILLE_CASE){ + ChoisirCouleurDessin(CouleurParNom("black")); + RemplirRectangle(serpent[0].x, serpent[0].y, TAILLE_CASE, TAILLE_CASE); + Attendre(1000); + *gameover = 0; + /*Execution de la fontion perdu*/ + Perdu(texte, score, minutes, secondes, rejouer); + } + for (i = 1; i < longSerpent; i++){ + if (serpent[0].x == serpent[i].x && serpent[0].y == serpent[i].y){ + Attendre(1000); + *gameover = 0; + Perdu(texte, score, minutes, secondes, rejouer); + } + } +} \ No newline at end of file diff --git a/serpent.h b/serpent.h index dfad686..df121cb 100644 --- a/serpent.h +++ b/serpent.h @@ -1,5 +1,20 @@ #ifndef SERPENT_H #define SERPENT_H -void DessinerScene(int sprite,int x,int y,int n) -#endif /*SERPENT_H */ +typedef struct +{ + int x; + int y; +} Segment; + + +void Creation_Serpent(Segment serpent[], int taille); +void Afficher_Serpent(Segment serpent[], int taille, int rotation); +void Deplacer_Serpent(int *longSerpent, Segment serpent[], int direction, unsigned int vitesse_serpent); +void Mort_Serpent(int longSerpent, Segment serpent[], int score, int minutes, int secondes, char texte[], int* rejouer, int* gameover); + + +#define TAILLE_SERPENT_INITIAL 10 +#define VITESSE_INITIAL 70U + +#endif /* SERPENT_H */ diff --git a/serpent.h~ b/serpent.h~ index 628b361..df121cb 100644 --- a/serpent.h~ +++ b/serpent.h~ @@ -1,7 +1,20 @@ #ifndef SERPENT_H #define SERPENT_H -void DessinerScene(int sprite,int x,int y,int n) -int main() -int serpent; -#endif /*SERPENT_H */ +typedef struct +{ + int x; + int y; +} Segment; + + +void Creation_Serpent(Segment serpent[], int taille); +void Afficher_Serpent(Segment serpent[], int taille, int rotation); +void Deplacer_Serpent(int *longSerpent, Segment serpent[], int direction, unsigned int vitesse_serpent); +void Mort_Serpent(int longSerpent, Segment serpent[], int score, int minutes, int secondes, char texte[], int* rejouer, int* gameover); + + +#define TAILLE_SERPENT_INITIAL 10 +#define VITESSE_INITIAL 70U + +#endif /* SERPENT_H */ diff --git a/serpent.o b/serpent.o new file mode 100644 index 0000000000000000000000000000000000000000..5be584b1d1ca096e51d11460bbb614e89ee6979b GIT binary patch literal 6688 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 +#include +#include +#include +#include "temps_et_score.h" + +void Attendre(unsigned int millisecondes){ + unsigned long debut = Microsecondes(); + unsigned long attente = millisecondes * 1000; + while (Microsecondes() - debut < attente){ + } +} + +void Afficher_Temps(int minutes, int secondes, char texte[]){ + ChoisirCouleurDessin(CouleurParNom("black")); + RemplirRectangle(75, 650, 250, 40); + ChoisirCouleurDessin(CouleurParNom("white")); + sprintf(texte, "Temps : %02d : %02d", minutes, secondes); + EcrireTexte(85, 685, texte, 2); +} + +void Afficher_Score(int score, char texte[]){ + ChoisirCouleurDessin(CouleurParNom("black")); + RemplirRectangle(825, 655, 150, 40); + ChoisirCouleurDessin(CouleurParNom("white")); + sprintf(texte, "Score : %3d", score); + EcrireTexte(825, 685, texte, 2); +} + diff --git a/temps_et_score.h b/temps_et_score.h new file mode 100644 index 0000000..a95c8e9 --- /dev/null +++ b/temps_et_score.h @@ -0,0 +1,8 @@ +#ifndef TEMPS_SCORE_H +#define TEMPS_SCORE_H + +void Attendre(unsigned int millisecondes); +void Afficher_Temps(int minutes, int secondes, char texte[]); +void Afficher_Score(int score, char texte[]); + +#endif /* TEMPS_SCORE_H */ diff --git a/temps_score.h~ b/temps_score.h~ new file mode 100644 index 0000000..a95c8e9 --- /dev/null +++ b/temps_score.h~ @@ -0,0 +1,8 @@ +#ifndef TEMPS_SCORE_H +#define TEMPS_SCORE_H + +void Attendre(unsigned int millisecondes); +void Afficher_Temps(int minutes, int secondes, char texte[]); +void Afficher_Score(int score, char texte[]); + +#endif /* TEMPS_SCORE_H */ diff --git a/temps_score.o b/temps_score.o new file mode 100644 index 0000000000000000000000000000000000000000..237b71e7f382f912ce1946e2d31071cc41a69c79 GIT binary patch literal 5592 zcmbW4dr(tX8o*Boq8Nl23xai>RJV#k!^1ba3dLwpj1S0;wJIdx24W$>n_!^|2)b$% z5PS`-v})aM?J6s}TGz)~s8m2fs#ff-`tL;#S>YnfBd~mr2|LB>?J?HzK z?{yycoSQ;z;%qOOj9`(G8Kg%-N=UG>ryVOaW64kwL<~CDJ>B|8YFGZFzW{y!51mWf zu~qxXTKhmwh^v;0o#mq5Fl~o!nzoaFR9@b6o;gsu^1EC)ojRAHLs#0*?WBP@bJwRr zDLws+KF)3NBIK)iwB=UttiN@B=T<|PZYvE|I*~aPB|-Tq>W1d}^|@;BXFz|wlhV0z zUY*fyYIklMc$i8@`^t=X*9n_-p{Z)Ig-p}WjoX{>Ng{! z(^y54%yymwVSE}m?_R^(Y%y_7bF0p@G}hK$tZl3#-c{=23fZ7EwJUN}&H7MHP+Rj^ zm3muX_<$=d_1?S9rlN%bvR^4;x$H{=OHGT)%`*k-<5o_J^0u##_T z6(cLJ1?R<{9hH5`qOS9~^6*)(A);!X?ogr6<4bXgGiq)vty24s8TDPLPeDz_Z)P@X zua>CIbV4#LVhtN{T0DNmOXD|e ztMf08RQ9{QSn*(`Y)@!u|Esg^-EUHuz6*QN-f;8nc^xqyp8R-w{l21hzxzWK{Ra5% zAF=y`|Kxs~FzB%D>7-BIEc@H>i3{RwqZBnQKgZ;#j%6&W8Ta?}z0and{waUP${(CL z%dcpyK`mcAw&ZzF+CQ>?XUyuXfP#i3MUBFq9Wl+;vhQ=%MDvQfCfBI&7q^1{HKRj* z$baa=aGEx3NJ0h(PkdzH(jn+oW2dl>Xb;M{RX4w`g>|k=mHj>>B&6`khRU~-Z^pP&jS~v-qWYwGp3r1$*H?!i=Heo#O@p# zX7)K$9S|0_Y2@ZhKW?c0@Ic7rn5K)3QF{$H%69!QR`bqi%f9oZOE#pgCw?kRq$eLk zd7aJc4dupvF3K&M_@_y2Bc@koUE6VC$r@YeG{uhER3F{iu4C_>IXd}yM{C36*Ys&2 zYqVAS9TlpCp<5e99;sACdEeb0RaaC}zhN|=lBE8xRUebyUXofc#yHb2ZTQ6-n_R`& z{XaQA+`Ml5#zSMK9%%ZgdQNDe{{?GN$;pZdBhs5cEBkdv#lPEsD(FhS^`rL0L+zQ2 z>nl$!jo5p0%=Hb+g5M7c`CVe^(vq9EzT9I;il|=c%=fiCoY3^yq2&9dN!#?t>CYPu zv=uBndgSL3U(Gvrvf=8U!K$-~Z9DGFtPgmqUDE&ygX7)CRte?Ys<4EXw?fMz^p_*% zUY}?Ac0qM$W5l>Ct&OeouP>ZtLWC{2`_T91#M z95sOuZ<>di{@_TZ8gz%rYJp*qF&XoGjdjRASWINOO4;jv{RfoO&f%294@#Wy@KTlNB@N)4y%uRBjf1beX%>a4gPCd>z z=))evxUC`%`vv&}#xWn{9U^^kKAj>i&Sx;ZkhDNt@pyw7NB=lpwMbv=KUBoU{wGQN zz_|fswn$$*UZaSM$BXj>dqMb|6uh|S7Mj5O)87dYXi>QG>p9>)r3 z9OK|$eA+~bIK+&@I)$jfpXO|*9M?m7coJeO(IIO&Z= zG-*bsk!VZ~2hs3$w;=SUai*N~6syf*r#eF0XfpBKYN`gt4Ds|Tq_?SFsA%HQ^a!$eMr>ERNCQb{=SD7iWVIk z7|b865!wesCoOa7&trTxpksno&jam|EJu3;tlq-n;(L$X((x~$9iH-6vkMsQA%9=` z!}yp#oEM(*uVwMeXur6iJ+e&N@DzU`i+_+QLVWm_fc6+4zMCO_BzDj?l!f4wmcG^x z=V3F|@o3LJX7Jt=oY4n{LHkOyM+H`&XZHAAh23a}^?qiL{aD{-_9$bGb|@dE4fxKH z?*D%XspQqShvYExN rVFM1N%+vk@COtdAehLdz0)nVW=Wj6W^JE_jAHTF*b64F@sr~-}VP$P( literal 0 HcmV?d00001 diff --git a/terrain.c b/terrain.c index 18f1cbd..b734e7f 100644 --- a/terrain.c +++ b/terrain.c @@ -1,16 +1,86 @@ - #include #include - -int main(void) { - couleur c; - InitialiserGraphique(); - CreerFenetre(10,10,500,500); - c=CouleurParNom("green"); - c=CouleurParComposante(161,232,90); - EffacerEcran(c); - Touche(); - FermerGraphique(); - return EXIT_SUCCESS; +#include +#include "terrain.h" + +/*Fonction initialisant le terrain de jeux*/ +void Terrain(){ + int i, j; + + for (i = CONTOURE_H; i < LIGNES + CONTOURE_H; i++) + { + for (j = CONTOURE_L; j < COLONNES + CONTOURE_L; j++){ + ChoisirCouleurDessin(CouleurParComposante(0, 217, 87)); + RemplirRectangle(j * TAILLE_CASE, i * TAILLE_CASE, TAILLE_CASE, TAILLE_CASE); + } + } } +/*Fonction dessinnant la bordure du terrain en noir pour enlever les block vert qui apparaissent*/ +void Contoure_Terrain(){ + int i, j; + for (i = 0; i < CONTOURE_H; i++){ + for (j = 0; j < COLONNES; j++){ + ChoisirCouleurDessin(CouleurParNom("black")); + RemplirRectangle(j * TAILLE_CASE, i * TAILLE_CASE, TAILLE_CASE, TAILLE_CASE); + } + } + for (j = 0; j < CONTOURE_L; j++){ + for (i = 0; i < LIGNES; i++){ + ChoisirCouleurDessin(CouleurParNom("black")); + RemplirRectangle(j * TAILLE_CASE, i * TAILLE_CASE, TAILLE_CASE, TAILLE_CASE); + } + } + for (j = COLONNES + CONTOURE_L; j < CONTOURE_L; j++){ + for (i = 0; i < LIGNES; i++){ + ChoisirCouleurDessin(CouleurParNom("black")); + RemplirRectangle(j * TAILLE_CASE, i * TAILLE_CASE, TAILLE_CASE, TAILLE_CASE); + } + } + +} + + +/*Fonction qui affiche le menu pause*/ +void Pause(char* texte, int minutes, int secondes, int score, int* continuer){ + EcrireTexte(10,10,"pause !",2); + while(*continuer == 2){ + if (ToucheEnAttente()){ + switch(Touche()){ + case XK_space : + *continuer = 1; + break; + case XK_Escape : + *continuer = 0; + break; + } + } + } + Terrain(); +} + +/*Fonction qui affiche le menu perdu*/ +void Perdu(char *texte, int score, int minutes, int secondes, int* rejouer) +{ + EffacerEcran(CouleurParNom("black")); + EcrireTexte(10,100,"Perdu",2); + /*Afficher le score sur l'image*/ + ChoisirCouleurDessin(CouleurParNom("black")); + sprintf(texte, "%3d", score); + EcrireTexte(550, 420, texte, 2); + /*affichage du timer au menu*/ + sprintf(texte, "%02d:%02d", minutes, secondes); + EcrireTexte(550, 485, texte, 2); + while(*rejouer == 2){ + if (ToucheEnAttente()){ + switch(Touche()){ + case XK_Return : + *rejouer = 1; + break; + case XK_Escape : + *rejouer = 0; + break; + } + } + } +} \ No newline at end of file diff --git a/terrain.h b/terrain.h index 340ea78..db5498d 100644 --- a/terrain.h +++ b/terrain.h @@ -1,5 +1,18 @@ -#ifndef TERRAIN_H -#define TERRAIN_H -int main(void) +#ifndef MENU_TERRAIN_H +#define MENU_TERRAIN_H -#endif /* TERRAIN_H */ +void Terrain(); +void Contoure_Terrain(); +void Start(int* jouer); +void Pause(char* texte, int minutes, int secondes, int score, int* continuer); +void Perdu(char *texte, int score, int minutes, int secondes, int* rejouer); + +#define LARGEUR_FENETRE 1050 +#define HAUTEUR_FENETRE 750 +#define TAILLE_CASE 15 +#define COLONNES 60 +#define LIGNES 40 +#define CONTOURE_H 2 +#define CONTOURE_L 5 + +#endif /* MENU_TERRAIN_H */ diff --git a/terrain.png b/terrain.png new file mode 100644 index 0000000000000000000000000000000000000000..0ba3f531ce2768005369daf8fcb1c38fa48f5463 GIT binary patch literal 37288 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