From 54da386d6a4c1ac411f73ac41722eec513114651 Mon Sep 17 00:00:00 2001 From: stiti Date: Wed, 6 Dec 2023 22:32:08 +0100 Subject: [PATCH] =?UTF-8?q?Soir=C3=A9e=20Peer=20Programming=20avec=20Marco?= =?UTF-8?q?=20ORFAO=20:=20Cr=C3=A9ation=20des=20pommes,=20ajouts=20de=20no?= =?UTF-8?q?uveaux=20modes=20de=20jeux,=20cr=C3=A9ation=20de=20fichier=20.h?= =?UTF-8?q?,=20correction=20de=20bug=20etc...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/grille.h | 10 ++++++++++ include/main.h | 6 ++++++ include/menu.h | 12 ++++++++++++ include/pomme.h | 16 ++++++++++++++++ include/serpent.h | 3 +-- src/grille.c | 24 +++++++----------------- src/main.c | 38 ++++++++++++++++++++++++-------------- src/menu.c | 40 ++++++++++++++++++++++++++++++---------- src/serpent.c | 21 +++++++++------------ 9 files changed, 115 insertions(+), 55 deletions(-) create mode 100644 include/grille.h create mode 100644 include/main.h create mode 100644 include/menu.h create mode 100644 include/pomme.h diff --git a/include/grille.h b/include/grille.h new file mode 100644 index 0000000..14ce3c4 --- /dev/null +++ b/include/grille.h @@ -0,0 +1,10 @@ +#ifndef GRILLE_H +#define GRILLE_H + +#define TAILLE_CASE 20 +#define LARGEUR_GRILLE 60 +#define HAUTEUR_GRILLE 40 + +void dessinerGrille(void); + +#endif /*GRILLE_H*/ diff --git a/include/main.h b/include/main.h new file mode 100644 index 0000000..ef730be --- /dev/null +++ b/include/main.h @@ -0,0 +1,6 @@ +#ifndef MAIN_H +#define MAIN_H + +int main(void); + +#endif /*MAIN_H*/ diff --git a/include/menu.h b/include/menu.h new file mode 100644 index 0000000..c5ddf0d --- /dev/null +++ b/include/menu.h @@ -0,0 +1,12 @@ +#ifndef MENU_H +#define MENU_H + + +void afficherMenuPrincipal(void); +void afficherMenuModesDeJeu(void); +void afficherMenuGameOver(void); +int attendreChoixGameOver(void); +int attendreChoixModesDeJeu(void); +int attendreChoixMenu(void); + +#endif /*MENU_H*/ diff --git a/include/pomme.h b/include/pomme.h new file mode 100644 index 0000000..765aadd --- /dev/null +++ b/include/pomme.h @@ -0,0 +1,16 @@ +#ifndef POMME_H +#define POMME_H + +#include "../include/grille.h" +#include "../include/serpent.h" + +typedef struct { + int x; + int y; +} Pomme; + +Pomme creerPomme(); +void dessinerPomme(Pomme pomme); +int verifierCollisionPommeSerpent(Pomme pomme, Segment serpent[], int longueur); + +#endif /*POMME_H*/ diff --git a/include/serpent.h b/include/serpent.h index e888987..d9153f9 100644 --- a/include/serpent.h +++ b/include/serpent.h @@ -1,14 +1,13 @@ #ifndef SERPENT_H #define SERPENT_H - typedef struct { int x, y; } Segment; void initialiserSerpent(Segment serpent[], int *longueur); void gestionDeplacements(Segment serpent[], int *direction_x, int *direction_y); -int tuerSerpent(Segment serpent[]); +int tuerSerpent(Segment serpent[], int longueur); void mettreAJourSerpent(Segment serpent[], int *longueur, int *direction_x, int *direction_y); void dessinerSerpent(Segment serpent[], int *longueur); int seMangerQueue(Segment serpent[], int longueur); diff --git a/src/grille.c b/src/grille.c index d8a6fb6..9c6a70f 100644 --- a/src/grille.c +++ b/src/grille.c @@ -1,12 +1,14 @@ #include +#include "../include/grille.h" -/* Dessine une grille de 60 colonnes sur 40 lignes */ -void dessinerGrille() { - ChargerImageFond("../img/grille.png"); + +void dessinerGrille(void) { + /* Dessine une grille de 60 colonnes sur 40 lignes */ int i, j; - int tailleCase = 20; + int tailleCase = 20; /* Taille d'une case */ couleur couleur1 = CouleurParComposante(170, 215, 82); /* Vert clair */ couleur couleur2 = CouleurParComposante(54, 103, 0); /* Vert foncé */ + ChargerImageFond("../img/bas_grille.png"); /*Affiche l'image du bas => Score... Timer...*/ for (i = 0; i < 40; i++) { for (j = 0; j < 60; j++) { @@ -18,16 +20,4 @@ void dessinerGrille() { RemplirRectangle(j * tailleCase, i * tailleCase, tailleCase, tailleCase); } } -} -/* UNIQUEMENT POUR TESTER LA GRILLE -int main() { - InitialiserGraphique(); - CreerFenetre(0, 0, 1200, 1000); - - dessinerGrille(); - - Touche(); - FermerGraphique(); - return 0; -} -*/ \ No newline at end of file +} \ No newline at end of file diff --git a/src/main.c b/src/main.c index d4bf11d..9abc3e3 100644 --- a/src/main.c +++ b/src/main.c @@ -1,30 +1,40 @@ #include #include #include -#include "../include/menu.h" #include "../include/jeu.h" +#include "../include/menu.h" - -int main(){ +int main(void) { + int choixMenuPrincipal = 0; + int choixModesDeJeu = 0; InitialiserGraphique(); CreerFenetre(0, 0, 1200, 1000); - int choixMenuPrincipal = 0; - int choixModesDeJeu = 0; - while (1){ - if(choixMenuPrincipal == 0){ + while (1) { + if (choixMenuPrincipal == 0) { afficherMenuPrincipal(); choixMenuPrincipal = attendreChoixMenu(); - }else if(choixMenuPrincipal == 1){ + } else if (choixMenuPrincipal == 1) { afficherMenuModesDeJeu(); choixModesDeJeu = attendreChoixModesDeJeu(); - choixMenuPrincipal = 0; - }else if(choixMenuPrincipal == 2){ + if(choixModesDeJeu == 1){ + lancer_jeu1(); + } + if(choixModesDeJeu == 2){ + lancer_jeu2(); + } + if(choixModesDeJeu == 3){ + lancer_jeu3(); + } + if(choixModesDeJeu == 4){ + lancer_jeu4(); + } + } else if (choixMenuPrincipal == 2) { FermerGraphique(); - return 0; + return EXIT_SUCCESS; } } - - return 0; -} \ No newline at end of file + + return EXIT_SUCCESS; +} diff --git a/src/menu.c b/src/menu.c index ea80e1a..a710c23 100644 --- a/src/menu.c +++ b/src/menu.c @@ -2,6 +2,7 @@ #include #include #include "../include/menu.h" +#include "../include/main.h" void afficherMenuPrincipal(){ ChargerImageFond("../img/menu_principal.png"); @@ -30,31 +31,54 @@ void afficherMenuModesDeJeu(){ ChoisirCouleurDessin(CouleurParComposante(168,116,67)); RemplirRectangle(38.7, 639.9, 241.6, 103); ChoisirCouleurDessin(CouleurParNom("black")); - EcrireTexte(98.6, 700, "Classique", 2); + EcrireTexte(87.6, 700, "Classique", 2); /*Affiche le bouton n°2*/ ChoisirCouleurDessin(CouleurParComposante(168,116,67)); RemplirRectangle(332.6, 639.9, 241.6, 103); ChoisirCouleurDessin(CouleurParNom("black")); - EcrireTexte(387.4, 700, "Facile", 2); + EcrireTexte(360.4, 700, "MultiPommes", 2); /*Affiche le bouton n°3*/ ChoisirCouleurDessin(CouleurParComposante(168,116,67)); RemplirRectangle(626.2, 639.9, 241.6, 103); ChoisirCouleurDessin(CouleurParNom("black")); - EcrireTexte(686.1, 700, "Moyen", 2); + EcrireTexte(700.1, 700, "Rapide", 2); /*Affiche le bouton n°4*/ ChoisirCouleurDessin(CouleurParComposante(168,116,67)); RemplirRectangle(919.7, 639.9, 241.6, 103); ChoisirCouleurDessin(CouleurParNom("black")); - EcrireTexte(979.7, 700, "Difficile", 2); + EcrireTexte(960.7, 700, "Ultra rapide", 2); } -void afficherMenuCheatCode(){ - ChargerImageFond("menu_cheat_code.png"); + +void afficherMenuGameOver(void) { + /* Affiche l'image game over */ + ChargerImageFond("../img/game_over.png"); } + +int attendreChoixGameOver() { + int x, y; + + while (1) { + if (SourisCliquee()) { + SourisPosition(); + x = _X; + y = _Y; + + /* Vérifie si le bouton "Menu Principal" est cliqué */ + if (x >= 379 && x <= 830.7 && y >= 530.3 && y <= 670.1) { + FermerGraphique(); + main(); /* Renvoie vers le menu principal" */ + } + + } + } +} + + int attendreChoixModesDeJeu(){ int x, y; @@ -83,10 +107,6 @@ int attendreChoixModesDeJeu(){ if (x >= 919.7 && x <= 1161.3 && y >= 639.9 && y <= 742.9) { return 4; /*Renvoie le choix bouton n°4*/ } - /*Vérifie si le bouton d'accès aux cheats codes est cliqué*/ - if (x >= 1126.1 && x <= 1193.5 && y >= 792.8 && y <= 860.2) { - return 5; - } } } diff --git a/src/serpent.c b/src/serpent.c index 92f8cf9..7f74c99 100644 --- a/src/serpent.c +++ b/src/serpent.c @@ -1,9 +1,6 @@ #include #include -#include /* en attendant de trouver une meilleur fonction pour le temps*/ -#include "../include/grille.h" #include "../include/serpent.h" - #define TAILLE_CASE 20 #define LARGEUR_GRILLE 60 #define HAUTEUR_GRILLE 40 @@ -39,25 +36,25 @@ void gestionDeplacements(Segment serpent[], int *direction_x, int *direction_y) } } -int tuerSerpent(Segment serpent[]) { - /*Vérifier si le serpent est sorti de la grille*/ +int tuerSerpent(Segment serpent[], int longueur) { + int i; + /*Vérifier si la tête du serpent est sortie de la grille après le déplacement*/ if (serpent[0].x < 0 || serpent[0].x >= LARGEUR_GRILLE || serpent[0].y < 0 || serpent[0].y >= HAUTEUR_GRILLE) { return 1; /*il est mort*/ } -} -int seMangerQueue(Segment serpent[], int longueur) { - int i; - /*Vérifie si la tête du serpent entre en collision avec son propre corps*/ + /*Vérifier si la tête du serpent entre en collision avec son propre corps*/ for (i = 1; i < longueur; ++i) { if (serpent[0].x == serpent[i].x && serpent[0].y == serpent[i].y) { - return 1; /*Le serpent s'est mangé sa propre queue*/ + return 1; /*il est mort*/ } } - return 0; /*Aucune collision avec la queue*/ + + return 0; /*le serpent est en vie*/ } + void mettreAJourSerpent(Segment serpent[], int *longueur, int *direction_x, int *direction_y) { int i; int ancienX = serpent[*longueur - 1].x; @@ -73,7 +70,7 @@ void mettreAJourSerpent(Segment serpent[], int *longueur, int *direction_x, int serpent[0].x += *direction_x; serpent[0].y += *direction_y; - tuerSerpent(serpent); /*Appeler la fonction pour vérifier si le serpent est mort*/ + tuerSerpent(serpent,*longueur); /*Appeler la fonction pour vérifier si le serpent est mort*/ } void dessinerSerpent(Segment serpent[], int *longueur) {