From 887caed23960033ace14723b13ae4d439a558069 Mon Sep 17 00:00:00 2001
From: Vince <vi.teissier@gmail.com>
Date: Thu, 21 Dec 2023 14:32:55 +0100
Subject: [PATCH] =?UTF-8?q?Am=C3=A9liration=20Graphique=20(=20non=20fini?=
 =?UTF-8?q?=20)=20+=20code=20plus=20facile=20a=20lire?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Makefile                        |   8 +-
 evenement.c                     |  17 +---
 evenement.h                     |   2 +-
 gui.c                           |  21 ++++
 gui.h                           |  10 ++
 images/{PERDU.png => Perdu.png} | Bin
 main.c                          | 164 +++++++++++---------------------
 prog                            | Bin 21504 -> 21568 bytes
 scene.c                         | 113 ++++++++++++++++++++++
 scene.h                         |  10 ++
 10 files changed, 217 insertions(+), 128 deletions(-)
 create mode 100644 gui.c
 create mode 100644 gui.h
 rename images/{PERDU.png => Perdu.png} (100%)
 create mode 100644 scene.c
 create mode 100644 scene.h

diff --git a/Makefile b/Makefile
index 1747d20..1ea5a49 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@ CFLAGS = -Wall -Wextra
 
 all: prog
 
-prog: main.o evenement.o GUI.o
+prog: main.o evenement.o gui.o scene.o
 	$(CC) -o $@ $^ -lgraph
 
 main.o: main.c evenement.h
@@ -12,8 +12,12 @@ main.o: main.c evenement.h
 evenement.o: evenement.c evenement.h
 	$(CC) $(CFLAGS) -c $< -o $@
 
-GUI.o: GUI.c GUI.h
+gui.o: gui.c gui.h
 	$(CC) $(CFLAGS) -c $< -o $@
 
+scene.o: scene.c scene.h
+	$(CC) $(CFLAGS) -c $< -o $@
+
+
 clean:
 	rm -f *.o prog
diff --git a/evenement.c b/evenement.c
index 2bc7c50..6c39fb1 100644
--- a/evenement.c
+++ b/evenement.c
@@ -3,7 +3,8 @@
 #include <stdlib.h>
 #include <time.h>
 #include "main.h"
-#include "GUI.h"   
+#include "gui.h"   
+#include "scene.h"
 
 void AfficherTimerEtScore(long unsigned int *score, int minutes,int secondes)   /*Afficher le temps passé et le score*/
 {   
@@ -25,17 +26,6 @@ void AfficherTimerEtScore(long unsigned int *score, int minutes,int secondes)
 	CopierZone(1,0,0,0,930,710,0,0);
 }
 
-void InitialiserPastilles(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent) {
-    int i;
-
-    srand(time(NULL));
-
-    for (i = 0; i < PASTILLES; i++) {
-        pastilles[i] = gen_pastille(serpent,pastilles,longueur_serpent);
-        ChargerImage("./images/PommePastille.png",pastilles[i].x,pastilles[i].y,0,0,T_PIXEL,T_PIXEL);
-    }
-}
-
 int MourrirSerpent(PIXELS *serpent, int longueur_serpent)
 {
     int i = 0;
@@ -94,7 +84,6 @@ void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur)
         tempY = tempY2;
     }
 
-
     if(direction == 0) /* Direction vers la gauche */
     {
         serpent[0].x-=T_PIXEL;
@@ -117,7 +106,7 @@ void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur)
     }
 }
 
-int Serpent(PIXELS *serpent,PIXELS *pastilles,unsigned long *score,int *longueur_serpent,unsigned long int *vitesse,int direction)
+int Serpent(PIXELS *serpent,PIXELS *pastilles,unsigned long *score,unsigned long *longueur_serpent,unsigned long int *vitesse,int direction)
 {
     if(MourrirSerpent(serpent,*longueur_serpent) == 1)
     {
diff --git a/evenement.h b/evenement.h
index 3fbd7c7..ea85f25 100644
--- a/evenement.h
+++ b/evenement.h
@@ -15,7 +15,7 @@ int PastilleSurSerpent(PIXELS pastille, PIXELS *serpent, int longueur_serpent);
 
 int MourrirSerpent(PIXELS *serpent, int longueur_serpent);
 
-int Serpent(PIXELS *serpent,PIXELS *pastilles,unsigned long *score,int *longueur_serpent,unsigned long int *vitesse,int direction);
+int Serpent(PIXELS *serpent,PIXELS *pastilles,unsigned long *score,unsigned long *longueur_serpent,unsigned long int *vitesse,int direction);
 
 
 #endif
\ No newline at end of file
diff --git a/gui.c b/gui.c
new file mode 100644
index 0000000..f887ed0
--- /dev/null
+++ b/gui.c
@@ -0,0 +1,21 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <graph.h>
+
+void Menu()
+{
+    ChoisirEcran(0);
+    ChargerImage("./images/Menu.png",0,0,0,0,930,710); 
+}
+
+void Pause()
+{
+    ChoisirEcran(0);
+    ChargerImage("./images/Pause.png",0,0,0,0,930,710);
+}
+
+void PerduGUI()
+{
+    ChoisirEcran(0);
+    ChargerImage("./images/Perdu.png",0,0,0,0,930,710); 
+}
\ No newline at end of file
diff --git a/gui.h b/gui.h
new file mode 100644
index 0000000..007bbaf
--- /dev/null
+++ b/gui.h
@@ -0,0 +1,10 @@
+#ifndef GUI_H
+#define GUI_H
+
+void Menu();
+void PerduGUI();
+void Pause();
+void Reinitialiser();
+int AfficherGUI(unsigned char menu);
+
+#endif
\ No newline at end of file
diff --git a/images/PERDU.png b/images/Perdu.png
similarity index 100%
rename from images/PERDU.png
rename to images/Perdu.png
diff --git a/main.c b/main.c
index d770ff0..6c51310 100644
--- a/main.c
+++ b/main.c
@@ -4,107 +4,12 @@
 #include <time.h>
 #include "evenement.h"
 #include "main.h"
-#include "GUI.h"
+#include "gui.h"
+#include "scene.h"
 
 #define DELTA 100000L
 #define DELTA2 1000000L
 
-int ArrondirPixel(int nombre) /* Calcule un arrondi du pixel pour pouvoir respecter la norme des 40 lignes et 60 colonnes */
-{
-    /* Calcul du reste de la division par 15 */
-    int reste = nombre % 15;
-
-    /* Calcul de l'arrondi au multiple de 15 le plus proche */
-    int arrondi = (reste <= 7) ? nombre - reste : nombre + (15 - reste);
-
-    return arrondi;
-}
-
-PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,int longueur_serpent)
-
-                                   /* nb_pastille = int nombre de pastille voulue , p_pastilles est un pointeur d'un tableau de pixels qui sont des pastilles*/
-                                   /*-Elles se génèrent à des endroits qui peuvent être les mêmes ou gêner le snake*/
-{
-    int x_pastille,y_pastille,i;
-    int ok = 0;
-    PIXELS pastille;
-    do{
-        ok = 0;
-        x_pastille= ArrondirPixel(rand()%W_GAME);
-        y_pastille = ArrondirPixel(rand()%H_GAME);
-        for(i=0;i<longueur_serpent;i++)
-        {
-            if(x_pastille == serpent[i].x && y_pastille == serpent[i].y)
-            {
-                ok = 1; /* Check si la pastille se genère sur une coordonné du serpent */
-            }
-            if(x_pastille == pastilles[i].x && y_pastille == pastilles[i].y)
-            {
-                ok = 1;
-            }
-
-        }       
-    }while(ok);
-
-    if(x_pastille < DECALEMENT)
-    {
-        x_pastille =+ DECALEMENT;
-    }
-
-    if(y_pastille < DECALEMENT)
-    {
-        y_pastille =+ DECALEMENT;
-    }
-
-
-    pastille.x = x_pastille ;
-    pastille.y = y_pastille ;
-
-    return pastille;
-}
-
-void InitialisationDuSerpent(PIXELS *p_serpent) /* L'initialisation du serpent */
-{
-    int x_millieu = 0, y_millieu = 0 , compteur = 0;
-    x_millieu = T_PIXEL*30; /* 30 = 60 colonnes divisé par 2*/
-    y_millieu = T_PIXEL*20; /* 20 = 40 colonnes divisé par 2*/
-    ChoisirEcran(2);
-    ChargerImage("./images/SnakePart.png",x_millieu,y_millieu,0,0,T_PIXEL,T_PIXEL);
-
-    p_serpent[0].x = x_millieu;
-    p_serpent[0].y = y_millieu;
-    for(compteur=0;compteur<9;compteur++) /*Commence par 1 car p_serpent index 0 initialisées pour la tête et 2 + 2x9 = 10 couples de coordonnées 2D */
-    {
-        p_serpent[compteur+1].x = p_serpent[compteur].x+T_PIXEL;
-        p_serpent[compteur+1].y = p_serpent[compteur].y;
-
-        ChargerImage("./images/SnakePart.png",p_serpent[compteur+1].x,p_serpent[compteur+1].y,0,0,T_PIXEL,T_PIXEL);
-    }
-}
-
-void DessinerScene(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent) /* Dessine la scène */
-{
-    couleur bg;
-    couleur border;
-    ChoisirEcran(2);
-    border=CouleurParComposante(78, 93, 47);
-    bg=CouleurParComposante(171, 204, 104);
-
-    ChoisirCouleurDessin(border);
-    RemplirRectangle(0,0,930,630);
-
-    ChoisirCouleurDessin(bg);
-    RemplirRectangle(0,630,930,650);
-
-    ChoisirCouleurDessin(border);
-    RemplirRectangle(0,650,930,15);
-
-    ChoisirCouleurDessin(bg);
-    RemplirRectangle(T_PIXEL,T_PIXEL,W_GAME,H_GAME);
-    InitialiserPastilles(pastilles,serpent,longueur_serpent);
-    InitialisationDuSerpent(serpent);
-}
-
 int main()
 {   
     unsigned char pause = 0;
@@ -117,6 +22,7 @@ int main()
     int minutes = 0;
     unsigned long int vitesse = DELTA;
     int valeur_retourne = 0;
+    unsigned char perdu = 0;
 
     size_t longueur_serpent = 10;
     size_t longueur_pastilles = PASTILLES;
@@ -141,16 +47,43 @@ int main()
     DessinerScene(pastilles,serpent,longueur_serpent);
     while(window_on)
     {
-        ChoisirEcran(0);
-        Menu();
-        if (ToucheEnAttente() == 1)
+        if(perdu == 1)
         {
-            switch (Touche())
+            PerduGUI();
+            if (ToucheEnAttente() == 1)
             {
-                case XK_space:
-                    game_on=1;
-                    DessinerScene(pastilles,serpent,longueur_serpent);
-                    break;
+                switch (Touche())
+                {
+                    case XK_Return:
+                        perdu = 0;
+                        break;
+                }
+            }
+        }
+        else
+        {
+            Menu();
+            if (ToucheEnAttente() == 1)
+            {
+                switch (Touche())
+                {
+                    case XK_Return  :
+                        game_on=1;
+                        secondes = 0;
+                        minutes = 0;
+                        score = 0;
+                        vitesse = DELTA;
+                        longueur_serpent = 10;
+                        direction = 0;
+                        direction_davant = 0;
+                        DessinerScene(pastilles,serpent,longueur_serpent);
+                        break;
+                    case XK_Escape:
+                        free(serpent);
+                        free(pastilles);
+                        FermerGraphique();
+                        return EXIT_SUCCESS;
+                }
             }
         }
 
@@ -195,16 +128,23 @@ int main()
                             pause=1;
                             break;
                         }
-                        else if(pause == 1)
-                        {
                             pause=0;
                             break;
+                            
+                    case XK_Escape:
+                        if(pause == 1)
+                        {
+                            free(serpent);
+                            free(pastilles);
+                            FermerGraphique();
+                            return EXIT_SUCCESS;
                         }
-                }
+                        break;
+                    }
+                            
 
             if(pause==1)
             {
-                ChoisirEcran(0);
                 Pause();
             }
 
@@ -226,6 +166,7 @@ int main()
 
                     if (Microsecondes()>suivant)        
                     {                  
+                        serpent = (PIXELS*) realloc(serpent,longueur_serpent * sizeof(PIXELS));
                         suivant=Microsecondes()+vitesse;
                         AfficherTimerEtScore(&score,minutes,secondes);
                         direction_davant = direction; /* Check si le serpent à le droit de changer de direction */
@@ -233,10 +174,10 @@ int main()
                         valeur_retourne = Serpent(serpent,pastilles,&score,&longueur_serpent,&vitesse,direction);
                         if(valeur_retourne == 1)
                         {
-                            serpent = (PIXELS*) realloc(serpent,longueur_serpent * sizeof(PIXELS));
                         }
                         else if (valeur_retourne == 2)
                         {
+                            perdu=1;
                             game_on=0;
                         }
                     }
@@ -244,7 +185,8 @@ int main()
             }
         }
     }
-
+    free(serpent);
+    free(pastilles);
     FermerGraphique();
     return EXIT_SUCCESS;
 }
diff --git a/prog b/prog
index 3ee3a30932c830f682f703ec88f8276e29c4253a..43034113fc8812dc939672b71457e898e6b9c4e1 100755
GIT binary patch
delta 5126
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
Lk14HWWXbt|M*^wb

delta 4643
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
G$opT(@9(|<

diff --git a/scene.c b/scene.c
new file mode 100644
index 0000000..4c14736
--- /dev/null
+++ b/scene.c
@@ -0,0 +1,113 @@
+#include <graph.h>
+#include <time.h>
+#include <stdlib.h>
+#include "main.h"
+
+
+
+int ArrondirPixel(int nombre) /* Calcule un arrondi du pixel pour pouvoir respecter la norme des 40 lignes et 60 colonnes */
+{
+    /* Calcul du reste de la division par 15 */
+    int reste = nombre % 15;
+
+    /* Calcul de l'arrondi au multiple de 15 le plus proche */
+    int arrondi = (reste <= 7) ? nombre - reste : nombre + (15 - reste);
+
+    return arrondi;
+}
+
+PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,int longueur_serpent)
+
+                                   /* nb_pastille = int nombre de pastille voulue , p_pastilles est un pointeur d'un tableau de pixels qui sont des pastilles*/
+                                   /*-Elles se génèrent à des endroits qui peuvent être les mêmes ou gêner le snake*/
+{
+    int x_pastille,y_pastille,i;
+    int ok = 0;
+    PIXELS pastille;
+    do{
+        ok = 0;
+        x_pastille= ArrondirPixel(rand()%W_GAME);
+        y_pastille = ArrondirPixel(rand()%H_GAME);
+        for(i=0;i<longueur_serpent;i++)
+        {
+            if(x_pastille == serpent[i].x && y_pastille == serpent[i].y)
+            {
+                ok = 1; /* Check si la pastille se genère sur une coordonné du serpent */
+            }
+            if(x_pastille == pastilles[i].x && y_pastille == pastilles[i].y)
+            {
+                ok = 1;
+            }
+
+        }       
+    }while(ok);
+
+    if(x_pastille < DECALEMENT)
+    {
+        x_pastille =+ DECALEMENT;
+    }
+
+    if(y_pastille < DECALEMENT)
+    {
+        y_pastille =+ DECALEMENT;
+    }
+
+
+    pastille.x = x_pastille ;
+    pastille.y = y_pastille ;
+
+    return pastille;
+}
+
+void InitialisationDuSerpent(PIXELS *p_serpent) /* L'initialisation du serpent */
+{
+    int x_millieu = 0, y_millieu = 0 , compteur = 0;
+    x_millieu = T_PIXEL*30; /* 30 = 60 colonnes divisé par 2*/
+    y_millieu = T_PIXEL*20; /* 20 = 40 colonnes divisé par 2*/
+    ChoisirEcran(2);
+    ChargerImage("./images/SnakePart.png",x_millieu,y_millieu,0,0,T_PIXEL,T_PIXEL);
+
+    p_serpent[0].x = x_millieu;
+    p_serpent[0].y = y_millieu;
+    for(compteur=0;compteur<9;compteur++) /*Commence par 1 car p_serpent index 0 initialisées pour la tête et 2 + 2x9 = 10 couples de coordonnées 2D */
+    {
+        p_serpent[compteur+1].x = p_serpent[compteur].x+T_PIXEL;
+        p_serpent[compteur+1].y = p_serpent[compteur].y;
+
+        ChargerImage("./images/SnakePart.png",p_serpent[compteur+1].x,p_serpent[compteur+1].y,0,0,T_PIXEL,T_PIXEL);
+    }
+}
+
+void InitialiserPastilles(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent) {
+    int i;
+
+    srand(time(NULL));
+
+    for (i = 0; i < PASTILLES; i++) {
+        pastilles[i] = gen_pastille(serpent,pastilles,longueur_serpent);
+        ChargerImage("./images/PommePastille.png",pastilles[i].x,pastilles[i].y,0,0,T_PIXEL,T_PIXEL);
+    }
+}
+
+void DessinerScene(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent) /* Dessine la scène */
+{
+    couleur bg;
+    couleur border;
+    ChoisirEcran(2);
+    border=CouleurParComposante(78, 93, 47);
+    bg=CouleurParComposante(171, 204, 104);
+
+    ChoisirCouleurDessin(border);
+    RemplirRectangle(0,0,930,630);
+
+    ChoisirCouleurDessin(bg);
+    RemplirRectangle(0,630,930,650);
+
+    ChoisirCouleurDessin(border);
+    RemplirRectangle(0,650,930,15);
+
+    ChoisirCouleurDessin(bg);
+    RemplirRectangle(T_PIXEL,T_PIXEL,W_GAME,H_GAME);
+    InitialiserPastilles(pastilles,serpent,longueur_serpent);
+    InitialisationDuSerpent(serpent);
+}
\ No newline at end of file
diff --git a/scene.h b/scene.h
new file mode 100644
index 0000000..e7ffc2e
--- /dev/null
+++ b/scene.h
@@ -0,0 +1,10 @@
+#include "main.h"
+
+#ifndef SCENE_H
+#define SCENE_H
+
+void InitialiserPastilles(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent);
+PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,int longueur_serpent);
+void DessinerScene(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent);
+
+#endif
\ No newline at end of file