From 4e1a6be5b3872261b8648efa8e45ffe8ce7951ae Mon Sep 17 00:00:00 2001 From: orfao Date: Thu, 7 Dec 2023 09:13:31 +0100 Subject: [PATCH] update jeu.c/jeu.h --- include/jeu.h | 5 ++ src/jeu.c | 215 +++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 207 insertions(+), 13 deletions(-) diff --git a/include/jeu.h b/include/jeu.h index b8b7af3..f05d073 100644 --- a/include/jeu.h +++ b/include/jeu.h @@ -1,6 +1,11 @@ #ifndef JEU_H #define JEU_H + void lancer_jeu1(void); +void lancer_jeu2(void); +void lancer_jeu3(void); +void lancer_jeu4(void); + #endif /*JEU_H*/ \ No newline at end of file diff --git a/src/jeu.c b/src/jeu.c index 4a5035d..d772842 100644 --- a/src/jeu.c +++ b/src/jeu.c @@ -1,27 +1,34 @@ #include +#include #include -#include +#include #include "../include/grille.h" #include "../include/serpent.h" #include "../include/pomme.h" #include "../include/jeu.h" +#include "../include/menu.h" + + void lancer_jeu1(void) { Segment serpent[100]; - int longueur = 5; + int longueur = 10; int direction_x = 1; int direction_y = 0; - int i; + int score = 0; + char scoreStr[20]; + Pomme pomme; + + FermerGraphique(); InitialiserGraphique(); CreerFenetre(0, 0, 1200, 1000); - initialiserSerpent(serpent, &longueur); - dessinerGrille(); /*Dessiner la grille*/ + dessinerGrille(); - Pomme pomme = creerPomme(); - dessinerPomme(pomme); + pomme = creerPomme(); + dessinerPomme(pomme); while (1) { gestionDeplacements(serpent, &direction_x, &direction_y); @@ -29,17 +36,199 @@ void lancer_jeu1(void) { if (serpent[0].x == pomme.x && serpent[0].y == pomme.y) { longueur++; - pomme = creerPomme(); /*Générer une pomme*/ + score += 5; + pomme = creerPomme(); dessinerPomme(pomme); } - if (tuerSerpent(serpent) || seMangerQueue(serpent, longueur)) { - /*Si le serpent est mort, gestion du game over* - /*Ajoutez ici menu game over*/ - /*ChargerImageFond("../img/game_over.png");*/ + if (tuerSerpent(serpent, longueur)) { + int choixGameOver; + afficherMenuGameOver(); + + /* Attend le choix du joueur après le game over */ + choixGameOver = attendreChoixGameOver(); + } + + dessinerSerpent(serpent, &longueur); + + /* Efface l'ancien score */ + ChoisirCouleurDessin(CouleurParComposante(0, 0, 0)); + RemplirRectangle(178, 946, 200, 40); + /* Convertit le score en chaîne de caractères */ + snprintf(scoreStr, sizeof(scoreStr), "%d", score); + /* Affiche le nouveau score */ + ChoisirCouleurDessin(CouleurParComposante(255, 255, 255)); + EcrireTexte(178, 976, scoreStr, 2); + + struct timespec delai = {0, 55000000}; /*50 000 000 nanosecondes (0.05 seconde)*/ + nanosleep(&delai, NULL); + } +} + +void lancer_jeu2(void) { + int i; + Segment serpent[100]; + int longueur = 10; + int direction_x = 1; + int direction_y = 0; + int score = 0; + char scoreStr[20]; + Pomme pommes[5]; + + FermerGraphique(); + InitialiserGraphique(); + CreerFenetre(0, 0, 1200, 1000); + + initialiserSerpent(serpent, &longueur); + dessinerGrille(); + + for (i = 0; i < 5; i++) { + pommes[i] = creerPomme(); + dessinerPomme(pommes[i]); + } + + while (1) { + gestionDeplacements(serpent, &direction_x, &direction_y); + mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y); + + for (i = 0; i < 5; i++) { + if (serpent[0].x == pommes[i].x && serpent[0].y == pommes[i].y) { + longueur++; + score += 5; + pommes[i] = creerPomme(); + dessinerPomme(pommes[i]); + } + } + + if (tuerSerpent(serpent, longueur)) { + int choixGameOver; + afficherMenuGameOver(); + + /* Attend le choix du joueur après le game over */ + choixGameOver = attendreChoixGameOver(); } dessinerSerpent(serpent, &longueur); - usleep(100000); + + /* Efface l'ancien score */ + ChoisirCouleurDessin(CouleurParComposante(0, 0, 0)); + RemplirRectangle(178, 946, 200, 40); + /* Convertit le score en chaîne de caractères */ + snprintf(scoreStr, sizeof(scoreStr), "%d", score); + /* Affiche le nouveau score */ + ChoisirCouleurDessin(CouleurParComposante(255, 255, 255)); + EcrireTexte(178, 976, scoreStr, 2); + + struct timespec delai = {0, 55000000}; /*50 000 000 nanosecondes (0.05 seconde)*/ + nanosleep(&delai, NULL); + } +} + + +void lancer_jeu3(void) { + struct timespec delai = {0, 40000000}; /*40 000 000 nanosecondes (0.04 seconde)*/ + Segment serpent[100]; + int longueur = 10; + int direction_x = 1; + int direction_y = 0; + int score = 0; + char scoreStr[20]; + Pomme pomme; + + FermerGraphique(); + InitialiserGraphique(); + CreerFenetre(0, 0, 1200, 1000); + + initialiserSerpent(serpent, &longueur); + dessinerGrille(); + + pomme = creerPomme(); + dessinerPomme(pomme); + + while (1) { + gestionDeplacements(serpent, &direction_x, &direction_y); + mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y); + + if (serpent[0].x == pomme.x && serpent[0].y == pomme.y) { + longueur++; + score += 5; + pomme = creerPomme(); + dessinerPomme(pomme); + } + + if (tuerSerpent(serpent, longueur)) { + int choixGameOver; + afficherMenuGameOver(); + + /* Attend le choix du joueur après le game over */ + choixGameOver = attendreChoixGameOver(); + } + + dessinerSerpent(serpent, &longueur); + + /* Efface l'ancien score */ + ChoisirCouleurDessin(CouleurParComposante(0, 0, 0)); + RemplirRectangle(178, 946, 200, 40); + /* Convertit le score en chaîne de caractères */ + snprintf(scoreStr, sizeof(scoreStr), "%d", score); + /* Affiche le nouveau score */ + ChoisirCouleurDessin(CouleurParComposante(255, 255, 255)); + EcrireTexte(178, 976, scoreStr, 2); + /*Permet de gérer la vitesse du serpent*/ + nanosleep(&delai, NULL); + } +} + +void lancer_jeu4(void) { + struct timespec delai = {0, 30000000}; /*40 000 000 nanosecondes (0.04 seconde)*/ + Segment serpent[100]; + int longueur = 10; + int direction_x = 1; + int direction_y = 0; + int score = 0; + char scoreStr[20]; + Pomme pomme; + + FermerGraphique(); + InitialiserGraphique(); + CreerFenetre(0, 0, 1200, 1000); + + initialiserSerpent(serpent, &longueur); + dessinerGrille(); + + pomme = creerPomme(); + dessinerPomme(pomme); + + while (1) { + gestionDeplacements(serpent, &direction_x, &direction_y); + mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y); + + if (serpent[0].x == pomme.x && serpent[0].y == pomme.y) { + longueur++; + score += 5; + pomme = creerPomme(); + dessinerPomme(pomme); + } + + if (tuerSerpent(serpent, longueur)) { + int choixGameOver; + afficherMenuGameOver(); + + /* Attend le choix du joueur après le game over */ + choixGameOver = attendreChoixGameOver(); + } + + dessinerSerpent(serpent, &longueur); + + /* Efface l'ancien score */ + ChoisirCouleurDessin(CouleurParComposante(0, 0, 0)); + RemplirRectangle(178, 946, 200, 40); + /* Convertit le score en chaîne de caractères */ + snprintf(scoreStr, sizeof(scoreStr), "%d", score); + /* Affiche le nouveau score */ + ChoisirCouleurDessin(CouleurParComposante(255, 255, 255)); + EcrireTexte(178, 976, scoreStr, 2); + /*Permet de gérer la vitesse du serpent*/ + nanosleep(&delai, NULL); } } \ No newline at end of file