From 50e625e1b1bafb2a7ad96bae0b8c5a59406c1d19 Mon Sep 17 00:00:00 2001 From: stiti Date: Thu, 7 Dec 2023 18:15:48 +0100 Subject: [PATCH] Modification de bugs + changement de pomme --- img/pomme1.png | Bin 353 -> 1222 bytes include/menu.h | 2 +- src/jeu.c | 61 ++++++++++++++---------------------- src/menu.c | 83 ++++++++++++++++++++++++------------------------- src/pomme.c | 34 ++++++++++++++++++++ 5 files changed, 100 insertions(+), 80 deletions(-) create mode 100644 src/pomme.c diff --git a/img/pomme1.png b/img/pomme1.png index 5d96e3fde3cca6a9fd965f6bdac5bd84a1b2a584..51e3b419b6e7162fb98229d43e1d86f40e98b784 100644 GIT binary patch literal 1222 zcmV;%1UdVOP)4L_{AD6A52Jv z)JRbLfQdzGFvJ8xYAqN@jEF=@gQ-fpeQdY;=x+CUUvtN~w=Drl6HhW9?wvWm^FQaz z90dQvd_Esm6IZr;cPaF{e*Cq!w(js$THARCY48+j#mOkT*1zw@hir>O8}TTmsI#*Z zPfSdZy}jiSx@wQ#w!V$1S$oMbC?~8_)NungRfpW;R6O+^Sc*l!1|h6+xAiZ zNHNyhK@szxWCxc>RKFJJswPjz&3)DU6-*MEFl z)9`X{uKlD^;1Gz_3`u_wP*j8fA7<4yLsL;RNK^)CE=(6^|3Wzy4!&~dzu3Ppd**J+ z>#z?V+3{50N@^@sUrJr2r6jcwz}Z*~5R04DL@KE&=SX5uGFjj-21p)baa?UqS;$G2Ws4n50TjPG?o$x)_pVPM25*8cB{eIvC0e~{+b<;z$PZG=+aKu!K zsU*b1L9M`KMn~;J^QW=cA4UyFE9*|}vI+-m)DN<2OEW5v5KEiK zAZN1>3kFmdLi~u+e)!#Z^n?K%E35lqyVKHbX{jU0`FTua*+_LG(^Vps36&*S4lby9 zfcWpNmQN06;)e{c@v@rn7Kf$F)KpEfm_ms{Hl2i(NJw=th37r4_uq^J2Mn)| zoZh_$1j|{ms(@fS!c#2bMH^c35k0CGx-A^oX|$~afWHi& zeo;~TddHmqxaiDRa=k8rvzd*1LKz5%22^IVf-U|2F*K|!1tFWwsBRAPUzeBc?)U$5 zQD-52Og)F#5MpoV$i%fVb0pBI@i~gsY83>V4R}GI3_@Ag5yK)y5+TE0kRrhN{Aakzz=%&NUP-vda+CiITh1_m4bx_L0TdSp%h~EMFwD3DHiI~WvUUG69Jmb8 zhz>|H2;?`PR zKn9p|^JBO^N#P@kSo&26SCWB&xq*SGl5|Zb`dU@;EQgU9LO-RL9p<^Wh)`WV6FliM6Myot{OE6caXya8>A$M zk@3F~7aySr!YU7seyXJ-m^I`i1DI=2GA*eF{rUfo;q151;8cxb5X_4p8aaXf0p>dp zWMyPR2_t0JU>Jn#O(b1kfVT1?7cDSXAe#&T0v>gFs6Igp00000NkvXXu0mjf?;MBE diff --git a/include/menu.h b/include/menu.h index c5ddf0d..92a435c 100644 --- a/include/menu.h +++ b/include/menu.h @@ -1,7 +1,7 @@ #ifndef MENU_H #define MENU_H - +void afficherBouton(double x1, double y1, double x2, double y2, const char *texte, couleur arriere_plan, couleur bordure, couleur couleur_texte, int taille_texte); void afficherMenuPrincipal(void); void afficherMenuModesDeJeu(void); void afficherMenuGameOver(void); diff --git a/src/jeu.c b/src/jeu.c index d772842..fd04703 100644 --- a/src/jeu.c +++ b/src/jeu.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include /* à supprimer prochainement */ #include "../include/grille.h" #include "../include/serpent.h" #include "../include/pomme.h" @@ -9,9 +9,21 @@ #include "../include/menu.h" +void afficherScore(int score) { + char scoreStr[20]; + /* 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); +} void lancer_jeu1(void) { + struct timespec delai = {0, 55000000}; /* A SUPPRIMER QUAND ON AURA LA FONCTION ATTENDRE*/ Segment serpent[100]; int longueur = 10; int direction_x = 1; @@ -51,21 +63,14 @@ void lancer_jeu1(void) { 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); + afficherScore(score); - struct timespec delai = {0, 55000000}; /*50 000 000 nanosecondes (0.05 seconde)*/ nanosleep(&delai, NULL); } } void lancer_jeu2(void) { + struct timespec delai = {0, 55000000}; /*50 000 000 nanosecondes (0.05 seconde)*/ int i; Segment serpent[100]; int longueur = 10; @@ -110,16 +115,8 @@ void lancer_jeu2(void) { 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); + afficherScore(score); - struct timespec delai = {0, 55000000}; /*50 000 000 nanosecondes (0.05 seconde)*/ nanosleep(&delai, NULL); } } @@ -166,21 +163,15 @@ void lancer_jeu3(void) { 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); + afficherScore(score); + /*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)*/ + struct timespec delai = {0, 28000000}; /*40 000 000 nanosecondes (0.04 seconde)*/ Segment serpent[100]; int longueur = 10; int direction_x = 1; @@ -220,15 +211,11 @@ void lancer_jeu4(void) { 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); + afficherScore(score); + /*Permet de gérer la vitesse du serpent*/ nanosleep(&delai, NULL); } -} \ No newline at end of file +} + + diff --git a/src/menu.c b/src/menu.c index a710c23..0fef9e9 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1,58 +1,37 @@ -#include -#include -#include +#include +#include +#include +#include #include "../include/menu.h" #include "../include/main.h" -void afficherMenuPrincipal(){ + + +void afficherMenuPrincipal() { ChargerImageFond("../img/menu_principal.png"); - /*Affiche le bouton "Jouer"*/ - ChoisirCouleurDessin(CouleurParComposante(0,151,178)); - RemplirRectangle(67, 850, 300, 100); - ChoisirCouleurDessin(CouleurParNom("black")); - EcrireTexte(180, 910, "Jouer", 2); - - /*Affiche le bouton "Quitter"*/ - ChoisirCouleurDessin(CouleurParComposante(0,151,178)); - RemplirRectangle(800, 850, 300, 100); - ChoisirCouleurDessin(CouleurParNom("black")); - EcrireTexte(910, 910, "Quitter", 2); + /* Affiche le bouton "Jouer" */ + afficherBouton(67, 850, 367, 950, "Jouer", CouleurParComposante(0,151,178), CouleurParNom("black"), CouleurParNom("black"), 2); + /* Affiche le bouton "Quitter" */ + afficherBouton(800, 850, 1100, 950, "Quitter", CouleurParComposante(0,151,178), CouleurParNom("black"), CouleurParNom("black"), 2); } - -void afficherMenuModesDeJeu(){ - - /*Affiche l'image de fond des modes de jeu*/ +void afficherMenuModesDeJeu() { + /* Affiche l'image de fond des modes de jeu */ ChargerImageFond("../img/modes_de_jeu.png"); - /*Affiche le bouton n°1*/ - ChoisirCouleurDessin(CouleurParComposante(168,116,67)); - RemplirRectangle(38.7, 639.9, 241.6, 103); - ChoisirCouleurDessin(CouleurParNom("black")); - 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(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(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(960.7, 700, "Ultra rapide", 2); + /* Affiche les boutons des modes de jeu */ + afficherBouton(38.7, 639.9, 280.3, 742.9, "Classique", CouleurParComposante(168, 116, 67), CouleurParNom("nom_de_la_couleur_bordure"), CouleurParNom("nom_de_la_couleur_texte"), 2); + afficherBouton(332.6, 639.9, 574.2, 742.9, "MultiPommes", CouleurParComposante(168, 116, 67), CouleurParNom("nom_de_la_couleur_bordure"), CouleurParNom("nom_de_la_couleur_texte"), 2); + afficherBouton(626.2, 639.9, 867.8, 742.9, "Rapide", CouleurParComposante(168, 116, 67), CouleurParNom("nom_de_la_couleur_bordure"), CouleurParNom("nom_de_la_couleur_texte"), 2); + afficherBouton(919.7, 639.9, 1161.3, 742.9, "Ultra rapide", CouleurParComposante(168, 116, 67), CouleurParNom("nom_de_la_couleur_bordure"), CouleurParNom("nom_de_la_couleur_texte"), 2); } + + + void afficherMenuGameOver(void) { /* Affiche l'image game over */ ChargerImageFond("../img/game_over.png"); @@ -134,3 +113,23 @@ int attendreChoixMenu(){ } } } + +void afficherBouton(double x1, double y1, double x2, double y2, const char *texte, couleur arriere_plan, couleur bordure, couleur couleur_texte, int taille_texte) { + /* Copie la chaîne constante dans une nouvelle chaîne non constante */ + char *texte_modifiable = strdup(texte); + + /* Affiche le bouton avec la couleur d'arrière-plan spécifiée */ + ChoisirCouleurDessin(arriere_plan); + RemplirRectangle(x1, y1, x2 - x1, y2 - y1); + + /* Affiche la bordure avec la couleur spécifiée */ + ChoisirCouleurDessin(bordure); + DessinerRectangle(x1, y1, x2 - x1, y2 - y1); + + /* Affiche le texte centré sur le bouton avec la couleur de texte spécifiée */ + ChoisirCouleurDessin(couleur_texte); + EcrireTexte((int)((x1 + x2) / 2 - TailleChaineEcran(texte_modifiable, taille_texte) / 2), (int)((y1 + y2) / 2 + TailleSupPolice(taille_texte) / 2), texte_modifiable, taille_texte); + + /* Libère la mémoire allouée pour la copie de la chaîne */ + free(texte_modifiable); +} \ No newline at end of file diff --git a/src/pomme.c b/src/pomme.c new file mode 100644 index 0000000..ce61496 --- /dev/null +++ b/src/pomme.c @@ -0,0 +1,34 @@ +#include +#include +#include "../include/grille.h" +#include "../include/serpent.h" + +typedef struct { + int x; + int y; +} Pomme; + +Pomme creerPomme() { + Pomme pomme; + pomme.x = rand() % 60; + pomme.y = rand() % 40; + return pomme; +} + +void dessinerPomme(Pomme pomme) { + /* Affichez une pomme*/ + int id_pomme; + id_pomme = ChargerSprite("../img/pomme1.png"); + AfficherSprite(id_pomme,pomme.x * TAILLE_CASE, pomme.y * TAILLE_CASE); +} + +int verifierCollisionPommeSerpent(Pomme pomme, Segment serpent[], int longueur) { + int i; + /*Vérifie si la pomme est sur une case occupée par le serpent*/ + for (i = 0; i < longueur; ++i) { + if (pomme.x == serpent[i].x && pomme.y == serpent[i].y) { + return 1; /* Collision */ + } + } + return 0; /* Pas de collision */ +}