From be324de28e39eb5ab66e0eeb59a6c34189cb008e Mon Sep 17 00:00:00 2001 From: boutarci Date: Mon, 4 Dec 2023 17:27:48 +0100 Subject: [PATCH] maj timer + ajout 5 pommes --- SAE_semestre1/fichier.h/menu.h | 1 + SAE_semestre1/fichier.h/serpent.h | 7 ++- SAE_semestre1/fichier.h/terrain.h | 0 SAE_semestre1/menu.c | 5 -- SAE_semestre1/src/game.c | 66 ++++++++----------------- SAE_semestre1/src/serpent.c | 81 ++++++++++++++++++++++--------- SAE_semestre1/src/time.c | 6 ++- 7 files changed, 89 insertions(+), 77 deletions(-) create mode 100644 SAE_semestre1/fichier.h/terrain.h delete mode 100644 SAE_semestre1/menu.c diff --git a/SAE_semestre1/fichier.h/menu.h b/SAE_semestre1/fichier.h/menu.h index 3baceef..2a7f8ac 100644 --- a/SAE_semestre1/fichier.h/menu.h +++ b/SAE_semestre1/fichier.h/menu.h @@ -1,5 +1,6 @@ #ifndef MENU_H #define MENU_H +void menu(void) #endif \ No newline at end of file diff --git a/SAE_semestre1/fichier.h/serpent.h b/SAE_semestre1/fichier.h/serpent.h index f209fc7..709dc7a 100644 --- a/SAE_semestre1/fichier.h/serpent.h +++ b/SAE_semestre1/fichier.h/serpent.h @@ -1,5 +1,10 @@ #ifndef SERPENT_H #define SERPENT_H - +typedef struct{ + Position *corps; + int longueur; +} Serpent; +Position pomme; +Serpent serpent; #endif \ No newline at end of file diff --git a/SAE_semestre1/fichier.h/terrain.h b/SAE_semestre1/fichier.h/terrain.h new file mode 100644 index 0000000..e69de29 diff --git a/SAE_semestre1/menu.c b/SAE_semestre1/menu.c deleted file mode 100644 index d6b888b..0000000 --- a/SAE_semestre1/menu.c +++ /dev/null @@ -1,5 +0,0 @@ -#include -#include -#include - - afficher diff --git a/SAE_semestre1/src/game.c b/SAE_semestre1/src/game.c index e9ecb2e..e12370d 100644 --- a/SAE_semestre1/src/game.c +++ b/SAE_semestre1/src/game.c @@ -1,23 +1,18 @@ #include #include #include +#include "time.c" #define LARGEUR_FENETRE 1250 #define HAUTEUR_FENETRE 750 #define TAILLE_CELLULE 25 #define DELAI_MILLISECONDES 100 #define ESPACE_NOIR 100 -#define CYCLE 100000L - +#define CYCLE 1000L int j,i; - int secondes = 0; - int minutes = 0; - int seconde_actuel = 0; - int old_seconde = 0; - char timer[6]; - unsigned long int suivant; - + int pommex[5]; + int pommey[5]; typedef struct { int x, y; } Position; @@ -30,8 +25,10 @@ Position pomme; Serpent serpent; int direction = 0; /* 0: droite, 1: bas, 2: gauche, 3: haut*/ + + void initialiserSerpent() { - serpent.longueur = 10; + serpent.longueur = 1; serpent.corps = (Position *)malloc(sizeof(Position) * serpent.longueur); serpent.corps[0].x = LARGEUR_FENETRE / 2; serpent.corps[0].y = HAUTEUR_FENETRE / 2; @@ -40,7 +37,7 @@ void initialiserSerpent() { void dessinerSerpent() { for (i = 0; i < serpent.longueur; i++) { if (i % 2 == 0) { - ChoisirCouleurDessin(CouleurParComposante(0,0,0)); /*JAUNE*/ + ChoisirCouleurDessin(CouleurParNom("yellow")); /*JAUNE*/ } RemplirRectangle(serpent.corps[i].x, serpent.corps[i].y, TAILLE_CELLULE, TAILLE_CELLULE); } @@ -70,16 +67,21 @@ void deplacerSerpent() { } int i; void genererPomme() { - pomme.x = rand() % (LARGEUR_FENETRE / TAILLE_CELLULE) * TAILLE_CELLULE; - pomme.y = rand() % (HAUTEUR_FENETRE / TAILLE_CELLULE) * TAILLE_CELLULE; + for(i=0; i<5; i++){ + pommex[i] = rand() % (LARGEUR_FENETRE / TAILLE_CELLULE) * TAILLE_CELLULE; + pommey[i] = rand() % (HAUTEUR_FENETRE / TAILLE_CELLULE) * TAILLE_CELLULE; + } } void dessinerPomme() { ChoisirCouleurDessin(CouleurParComposante(255, 0, 0)); - RemplirRectangle(pomme.x, pomme.y, TAILLE_CELLULE, TAILLE_CELLULE); - + for(i=0; i<5; i++){ + RemplirRectangle(pommex[i], pommey[i], TAILLE_CELLULE, TAILLE_CELLULE); + } } int collisionAvecPomme() { - return (serpent.corps[0].x == pomme.x && serpent.corps[0].y == pomme.y); + for(i=0;i<5;i++){ + return (serpent.corps[0].x == pommex[i] && serpent.corps[i].y == pommey[i]); +} } int collisionAvecSerpent() { @@ -110,31 +112,6 @@ void dessinerDamier() { } } } -void Update_Timer(){ - snprintf(timer,6, "%02d:%02d", minutes,secondes); - ChoisirCouleurDessin(CouleurParNom("black")); - RemplirRectangle(0, 1200, 1250, 800); - ChoisirCouleurDessin(CouleurParNom("white")); - EcrireTexte(10,800,timer,2); -} -void Timer(){ - if(Microsecondes()> suivant){ - suivant = Microsecondes()+CYCLE; - seconde_actuel = ((suivant/1000)%10); - if (seconde_actuel != old_seconde){ - old_seconde = seconde_actuel; - if(secondes == 59){ - minutes = minutes++; - secondes = 0; - Update_Timer(); - }else{ - secondes = secondes++; - Update_Timer(); - } - } - } -} - void gestionCollision() { if (collisionAvecPomme()) { serpent.longueur++; @@ -154,13 +131,11 @@ void attente(int milliseconds) { /* Attente*/ } } - void jeu() { InitialiserGraphique(); CreerFenetre(10, 10, LARGEUR_FENETRE, HAUTEUR_FENETRE + ESPACE_NOIR); ChoisirCouleurDessin(CouleurParComposante(0, 0, 0)); EffacerEcran(CouleurParComposante(0, 0, 0)); - initialiserSerpent(); genererPomme(); @@ -168,12 +143,9 @@ void jeu() { dessinerDamier(); /* Dessiner le damier en fond*/ Timer(); deplacerSerpent(); - gestionCollision(); - dessinerSerpent(); dessinerPomme(); - attente(DELAI_MILLISECONDES); /* Attente pour ralentir le serpent*/ if (SourisCliquee()) { @@ -206,4 +178,4 @@ void jeu() { int main() { jeu(); return 0; -} +} \ No newline at end of file diff --git a/SAE_semestre1/src/serpent.c b/SAE_semestre1/src/serpent.c index 24531ee..1e9e8ce 100644 --- a/SAE_semestre1/src/serpent.c +++ b/SAE_semestre1/src/serpent.c @@ -1,27 +1,64 @@ #include #include #include +#include "../pastille.h" -int direction = 4; -int t; - void Controle(void){ - printf("JSHUIHUS"); - while(ToucheEnAttente()){ - t = Touche(); - switch(t){ - case XK_Left: - printf("Gauche\n"); - break; - case XK_Right : - printf("Droite\n"); - break; - case XK_Up: - printf("Haut"); - break; - case XK_Down: - printf("bas"); - break; - } - } - } +typedef struct { + Position *corps; + int longueur; +} Serpent; +Position pomme; +Serpent serpent; +int direction = 0; /* 0: droite, 1: bas, 2: gauche, 3: haut*/ + +void initialiserSerpent() { + serpent.longueur = 10; + serpent.corps = (Position *)malloc(sizeof(Position) * serpent.longueur); + serpent.corps[0].x = LARGEUR_FENETRE / 2; + serpent.corps[0].y = HAUTEUR_FENETRE / 2; +} + +void dessinerSerpent() { + for (i = 0; i < serpent.longueur; i++) { + if (i % 2 == 0) { + ChoisirCouleurDessin(CouleurParComposante(0,0,0)); /*JAUNE*/ + } + RemplirRectangle(serpent.corps[i].x, serpent.corps[i].y, TAILLE_CELLULE, TAILLE_CELLULE); + } +} + +void deplacerSerpent() { + /* Déplacer le corps du serpent*/ + for (i = serpent.longueur - 1; i > 0; i--) { + serpent.corps[i] = serpent.corps[i - 1]; + } + + /* Déplacer la tête du serpent en fonction de la direction*/ + switch (direction) { + case 0: + serpent.corps[0].x += TAILLE_CELLULE; + break; + case 1: + serpent.corps[0].y += TAILLE_CELLULE; + break; + case 2: + serpent.corps[0].x -= TAILLE_CELLULE; + break; + case 3: + serpent.corps[0].y -= TAILLE_CELLULE; + break; + } +} +void gestionCollision() { + if (collisionAvecPomme()) { + serpent.longueur++; + serpent.corps = realloc(serpent.corps, sizeof(Position) * serpent.longueur); + genererPomme(); + } + + if (collisionAvecSerpent() || collisionAvecBordures()) { + FermerGraphique(); + exit(EXIT_SUCCESS); + } +} \ No newline at end of file diff --git a/SAE_semestre1/src/time.c b/SAE_semestre1/src/time.c index e60db29..48f2036 100644 --- a/SAE_semestre1/src/time.c +++ b/SAE_semestre1/src/time.c @@ -9,13 +9,14 @@ int seconde_actuel=0; int old_seconde=0; char timer[6]; unsigned long int suivant; +int nombre; void Update_Timer(){ snprintf(timer,6,"%02d:%02d", minute, seconde); ChoisirCouleurDessin(CouleurParComposante(0,0,0)); - RemplirRectangle(0,700,1200,800); + RemplirRectangle(0,780,1200,800); ChoisirCouleurDessin(CouleurParComposante(255,255,255)); - EcrireTexte(10,760,timer,2); + EcrireTexte(10,800,timer,2); } void Timer(){ @@ -35,3 +36,4 @@ void Timer(){ } } } +