From fd0c4a36a8639b0eca507fc4a67697c91a0acda1 Mon Sep 17 00:00:00 2001
From: keraudre <yann.keraudren@etu-upec.fr>
Date: Thu, 14 Dec 2023 01:07:57 +0100
Subject: [PATCH] =?UTF-8?q?avancement=20sur=20les=20d=C3=A9placement=20du?=
 =?UTF-8?q?=20serpent?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 snake/Makefile       |   5 +-
 snake/deplacement.c  | 187 +++++++++++++++++++++++++++----------------
 snake/fenetre.c      |   2 +-
 snake/lancement      | Bin 0 -> 20736 bytes
 snake/main.c         |  29 +++++--
 snake/plateau_init.c |  51 +++++++++---
 snake/plateau_init.h |   4 +-
 snake/supp_queue.c   |  51 ++++++++++++
 snake/supp_queue.h   |  14 ++++
 snake/update_queue.c |  35 --------
 snake/update_queue.h |  12 ---
 11 files changed, 256 insertions(+), 134 deletions(-)
 create mode 100755 snake/lancement
 create mode 100644 snake/supp_queue.c
 create mode 100644 snake/supp_queue.h
 delete mode 100644 snake/update_queue.c
 delete mode 100644 snake/update_queue.h

diff --git a/snake/Makefile b/snake/Makefile
index b92e83a..8e88d81 100755
--- a/snake/Makefile
+++ b/snake/Makefile
@@ -11,8 +11,9 @@ OFILES = plateau_init.o \
 	deplacement.o \
 	ajout_score.o \
 	score_init.o \
+	supp_queue.o \
 	main.o
-	 
+
 
 CC = gcc
 
@@ -26,6 +27,8 @@ fenetre.o : fenetre.h plateau_init.h
 
 deplacement.o : deplacement.h
 
+supp_queue.o : supp_queue.h
+
 ajout_score.o : ajout_score.h
 
 score_init.o : score_init.h
diff --git a/snake/deplacement.c b/snake/deplacement.c
index 803f4ca..155fcb3 100644
--- a/snake/deplacement.c
+++ b/snake/deplacement.c
@@ -7,7 +7,7 @@
 #include <stdio.h>
 #include <graph.h> 
 #include "plateau_init.h"
-#include "update_queue.h"
+#include "supp_queue.h"
 #include "deplacement.h"
 
 
@@ -21,7 +21,11 @@ void deplacement (struct adresse* pointeur, unsigned char* sens)  {
 
   unsigned char* tete = pointeur -> tete;
 
-  unsigned char* queue = pointeur -> queue;
+  unsigned int** corps_serpent = pointeur -> corps_serpent;
+
+  unsigned int* indice_queue = pointeur -> indice_queue; 
+
+  int touche;
 
   couleur green, yellow;
 
@@ -31,59 +35,6 @@ void deplacement (struct adresse* pointeur, unsigned char* sens)  {
 
 
 
-  printf("%d %d", queue[0], queue[1]);
- 
-
-  if ( *sens == BAS)  {
-
-    plateau[tete[0] + 1][tete[1]] = 1;
-
-    plateau[queue[0]][queue[1]] = 0;
-
-    tete[0] = tete[0] + 1;
-
-    ChoisirCouleurDessin(yellow);
-    RemplirRectangle(20*(tete[1] + 1),20*(tete[0] +1 ),20,20);
-
-    ChoisirCouleurDessin(green);
-    RemplirRectangle(20*(queue[1] +1 ),20*(queue[0] +1 ),20,20);
-
-    queue[0] = queue[0] + 1; 
-
-  
-
-	
-    }
-
-  if ( *sens == HAUT)  {
-
-    plateau[tete[0] - 1][tete[1]] = 1;
-
-    plateau[queue[0]][queue[1]] = 0;
-
-    tete[0] = tete[0] -1;
-
-  }
-
-  if ( *sens == DROITE)  {
-
-    plateau[tete[0]][tete[1] + 1] = 1;
-
-    plateau[queue[0]][queue[1]] = 0;
-
-    tete[1] = tete[1] + 1;
-
-  }
-
-  if ( *sens == GAUCHE)  {
-
-    plateau[tete[0]][tete[1] - 1] = 1;
-
-    plateau[queue[0]][queue[1]] = 0;
-
-    tete[1] = tete[1] - 1;
-
-  }
 
   
 		
@@ -91,71 +42,167 @@ void deplacement (struct adresse* pointeur, unsigned char* sens)  {
 
   if (ToucheEnAttente() == 1)  {
 
-    if (Touche() == XK_Left) {
+    touche = Touche();
+
+    if (touche == XK_Left) {
       
       plateau[tete[0]][tete[1]] = 0;
 
       plateau[tete[0]][tete[1] - 1] = 1;
 
-      plateau[queue[0]][queue[1]] = 0;
+      plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
 
       tete[1] = tete[1] - 1;
 
+      ChoisirCouleurDessin(yellow);
+      RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
+
+
       *sens = GAUCHE;
+
+       supp_queue(pointeur);
+
+      return;
 	
     }
 
-    if (Touche() == XK_Right)  {
+    if (touche == XK_Right)  {
 
       plateau[tete[0]][tete[1]] = 0;
 
       plateau[tete[0]][tete[1] + 1] = 1;
 
-      plateau[queue[0]][queue[1]] = 0;
+      plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
 
       tete[1] = tete[1] + 1;
 
+      ChoisirCouleurDessin(yellow);
+      RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
+
+
       *sens = DROITE;
 
+       supp_queue(pointeur);
+
+      return; 
     }
 
-    if (Touche() == XK_Up)  {
+    if (touche == XK_Up)  {
 
       plateau[tete[0]][tete[1]] = 0;
 
       plateau[tete[0] - 1][tete[1]] = 1;
 
-      plateau[queue[0]][queue[1]] = 0;
+      plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
 
       tete[0] = tete[0] - 1;
 
+      ChoisirCouleurDessin(yellow);
+      RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
+
+
       *sens = HAUT;
+
+       supp_queue(pointeur);
+
+      return; 
     }
 
-    if (Touche() == XK_Down)  {
+    if (touche == XK_Down)  {
 
       plateau[tete[0]][tete[1]] = 0;
 
       plateau[tete[0] + 1][tete[1]] = 1;
 
-      plateau[queue[0]][queue[1]] = 0;
+      plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
 
       tete[0] = tete[0] + 1;
 
-      *sens = DROITE;
+      ChoisirCouleurDessin(yellow);
+      RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
+
+
+      *sens = BAS;
+
+       supp_queue(pointeur);
+
+      return; 
 
     }
+
+ 
+  }
+
+  else {
+
+    if ( *sens == BAS)  {
+
+      plateau[tete[0] + 1][tete[1]] = 1;
+
+      plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
+
+      tete[0] = tete[0] + 1;
+
+      ChoisirCouleurDessin(yellow);
+      RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
+
+
+	
+    }
+
+    if ( *sens == HAUT)  {
+
+      plateau[tete[0] - 1][tete[1]] = 1;
+
+      plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
+      
+      tete[0] = tete[0] - 1;
+
+      ChoisirCouleurDessin(yellow);
+      RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
+
+
+    }
+
+  
+
+    if ( *sens == DROITE)  {
+
+      plateau[tete[0]][tete[1] + 1] = 1;
+
+      plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
+
+      tete[1] = tete[1] + 1;
+
+      ChoisirCouleurDessin(yellow);
+      RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
+
+
+    }
+
+    if ( *sens == GAUCHE)  {
+
+      plateau[tete[0]][tete[1] - 1] = 1;
+
+      plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
+    
+      tete[1] = tete[1] - 1;
+
+      ChoisirCouleurDessin(yellow);
+      RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
+    
+
+    }
+
+    /* mise à jour de la position de queue dans le plateau et sur le plateau */
+    
+    supp_queue( pointeur);
+
   }
 
 
 
 	
-      
-      
-    /* mise à jour de la position de queue dans le plateau */
-    
-    
- 
 }
 
 
diff --git a/snake/fenetre.c b/snake/fenetre.c
index f75d270..6113b55 100755
--- a/snake/fenetre.c
+++ b/snake/fenetre.c
@@ -97,7 +97,7 @@ int start (struct adresse* pointeur)  {
 
 	yellow = CouleurParComposante(255,255,0);
 	ChoisirCouleurDessin(yellow);
-	RemplirRectangle(20*(j+1),20*(i+1),20,20);
+	RemplirRectangle(20*(j+1),20*(i+1),20,40);
 
       }
 
diff --git a/snake/lancement b/snake/lancement
new file mode 100755
index 0000000000000000000000000000000000000000..95faf65f53a5468dafd4b6909b5286745617b61d
GIT binary patch
literal 20736
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
TpkV`S`ZGKrD#Xw<pm7-h%8cRG

literal 0
HcmV?d00001

diff --git a/snake/main.c b/snake/main.c
index 9f57e6e..e01b2ad 100644
--- a/snake/main.c
+++ b/snake/main.c
@@ -6,7 +6,7 @@
 #include "deplacement.h"
 
 
-#define CYCLE 1000000L
+#define CYCLE 200000L
 
 
 int main(void)  {
@@ -16,9 +16,10 @@ int main(void)  {
 
   short int* compteur = NULL;
 
-  int i;
+  int i = 0;
   
 
+  unsigned int* indice_queue = pointeur -> indice_queue; 
   unsigned char* sens = NULL;
 
   
@@ -27,6 +28,7 @@ int main(void)  {
   unsigned long suivant;
 
 
+
   sens = malloc(sizeof(unsigned char));
 
   *sens = 2;
@@ -59,11 +61,15 @@ int main(void)  {
 
     if (Microsecondes() > suivant) {
 
-    
+     printf("%u %u\n", pointeur -> corps_serpent[*indice_queue][0], pointeur -> corps_serpent[*indice_queue][1]);
+
+     
       deplacement(pointeur, sens);
 
       suivant = Microsecondes() + CYCLE;
 
+
+    
       
       }
 
@@ -79,13 +85,26 @@ int main(void)  {
 
    }
 
+
+   for ( i =0; i < TAILLE_SERPENT; i++) {
+
+     free(pointeur -> corps_serpent[i]);
+
+   }
+
+   free(pointeur -> corps_serpent);
+   
+
+   
    free(pointeur -> plateau);
 
    free(pointeur -> tete);
 
-   free(pointeur -> queue);
+   free(pointeur -> indice_queue);
 
-   free(sens); 
+   free(sens);
+
+   free(pointeur -> taille_serpent);
 
 
    free(pointeur);
diff --git a/snake/plateau_init.c b/snake/plateau_init.c
index b985944..b15546c 100755
--- a/snake/plateau_init.c
+++ b/snake/plateau_init.c
@@ -14,10 +14,12 @@ struct adresse* plateau_init(void) {
 
   int ligne_pomme, colonne_pomme, i;
 
-
   unsigned char* tete = NULL;
-  unsigned char* queue = NULL;
+  unsigned int* indice_queue = NULL;
+  unsigned int* taille_serpent = NULL; 
 
+  unsigned int** corps_serpent = NULL;
+  
   int** plateau  = NULL;
 
 
@@ -27,19 +29,28 @@ struct adresse* plateau_init(void) {
   srand(time(NULL));
 
 
+
+  
+
   /* allocation du pointeur */
 
   pointeur = malloc(sizeof( struct adresse));
 
 
 
+  
+
   /* allocation du tableau tete et queue */
 
   tete =  malloc(2*sizeof(unsigned char));
 
-  queue =  malloc(2*sizeof(unsigned char));
+  indice_queue =  malloc(sizeof(unsigned int));
 
-  /* allocation du tableau dans le tas */
+
+
+
+  
+  /* allocation du plateau dans le tas */
   
   plateau = calloc(LIGNES, sizeof(int*));
   
@@ -49,9 +60,26 @@ struct adresse* plateau_init(void) {
 
   }
 
- 
 
 
+  
+  /* allocation du corps du serpent */
+
+  corps_serpent = malloc(TAILLE_SERPENT * sizeof(unsigned int*));
+
+  for ( i = 0; i < TAILLE_SERPENT; i++) {
+
+    corps_serpent[i] = malloc( 2 * sizeof(unsigned int));
+
+  }
+
+
+
+  /* allocation de la taille du serpent */
+
+  taille_serpent = malloc(sizeof(unsigned int));
+  
+
   /* positionnement du serpent et marquage de la tete et la queue */
 
   tete[0] = ((LIGNES/2)+(TAILLE_SERPENT/2)-1);
@@ -59,13 +87,14 @@ struct adresse* plateau_init(void) {
 
   
 
-  queue[0] = ((LIGNES/2)-(TAILLE_SERPENT/2));
-  queue[1] = COLONNES/2; 
 
   for (i = 0; i < TAILLE_SERPENT ; i++)  {
 
     plateau[((LIGNES/2)-5)+i][COLONNES/2] = 1;
 
+    
+    corps_serpent[i][0] = ((LIGNES/2)-5) + i;
+    corps_serpent[i][1] = COLONNES/2;
 
   }
 
@@ -96,11 +125,15 @@ struct adresse* plateau_init(void) {
   }
 
 
+  *taille_serpent = TAILLE_SERPENT;
+
+  *indice_queue = 0; 
   
   pointeur -> plateau = plateau;
   pointeur -> tete = tete;
-  pointeur -> queue = queue; 
-    
+  pointeur -> indice_queue = indice_queue; 
+  pointeur -> corps_serpent = corps_serpent;
+  pointeur -> taille_serpent = taille_serpent; 
   
 
   
diff --git a/snake/plateau_init.h b/snake/plateau_init.h
index 0ffc960..55843a2 100644
--- a/snake/plateau_init.h
+++ b/snake/plateau_init.h
@@ -15,8 +15,10 @@
 
 struct adresse {
   int** plateau;
+  unsigned int** corps_serpent;
+  unsigned int* taille_serpent;
   unsigned char* tete;
-  unsigned char* queue;
+  unsigned int* indice_queue;
 };
 
 
diff --git a/snake/supp_queue.c b/snake/supp_queue.c
new file mode 100644
index 0000000..a384983
--- /dev/null
+++ b/snake/supp_queue.c
@@ -0,0 +1,51 @@
+/* Fonction qui mets à jour la position de la queue en fonction des déplacement du serpent
+
+   Written by Yann KERAUDREN and Titouan LERICHE */
+
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <graph.h>
+#include "supp_queue.h"
+
+
+
+
+void supp_queue( struct adresse* pointeur )  {
+
+
+  unsigned int** corps_serpent = pointeur -> corps_serpent;
+
+  unsigned int* taille_serpent = pointeur -> taille_serpent;
+
+  unsigned char* tete = pointeur -> tete;
+
+  unsigned int* indice_queue = pointeur -> indice_queue; 
+
+  
+  
+  
+  couleur green;
+
+  
+  green = CouleurParComposante(50,205,50);
+  ChoisirCouleurDessin(green);
+  RemplirRectangle(20*(corps_serpent[*indice_queue][1]+1),20*(corps_serpent[*indice_queue][0]+1),20,20);
+
+  corps_serpent[*indice_queue][0] = tete[0];
+  corps_serpent[*indice_queue][1] = tete[1];
+
+  
+  *indice_queue = *indice_queue + 1;
+
+  if ( *indice_queue == *taille_serpent )  {
+
+    *indice_queue = 0;
+
+  }
+
+
+}
+  
+
+  
diff --git a/snake/supp_queue.h b/snake/supp_queue.h
new file mode 100644
index 0000000..f97ac29
--- /dev/null
+++ b/snake/supp_queue.h
@@ -0,0 +1,14 @@
+/* fichier d'en-tête du fichier source supp_queue.c */
+
+
+#ifndef SUPP_QUEUE_H
+#define SUPP_QUEUE_H
+
+#include "plateau_init.h"
+
+void supp_queue(struct adresse* pointeur) ;
+
+#endif /* SUPP_QUEUE_H */
+
+
+  
diff --git a/snake/update_queue.c b/snake/update_queue.c
deleted file mode 100644
index 7496d58..0000000
--- a/snake/update_queue.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Fonction qui mets à jour la position de la queue en fonction des déplacement du serpent
-
-   Written by Yann KERAUDREN and Titouan LERICHE */
-
-
-#include <stdlib.h>
-#include <stdio.h>
-
-
-void maj_queue(int* queue, int** p)  {
-
-  if ( p[queue[0] +1 ][queue[1]] == 1 ) {
-
-    queue[0] = queue[0] +1 ;
-
-  }
-
-  if ( p[queue[0] - 1][queue[1]] == 1 )  {
-
-    queue[0] = queue[0] -1;
-  }
-
-  if ( p [queue[0]][queue[1]+1] == 1)  {
-
-    queue[1] = queue [1] +1;
-
-  }
-
-  if ( p [queue[0]][queue[1]-1] == 1)  {
-
-    queue[1] = queue[1] -1;
-
-  }
-
-}
diff --git a/snake/update_queue.h b/snake/update_queue.h
deleted file mode 100644
index e565eb6..0000000
--- a/snake/update_queue.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/* fichier d'en-tête du fichier source test_queue.c */
-
-
-#ifndef UPDATE_QUEUE_H
-#define UPDATE_QUEUE_H
-
-int test_queue(int* queue, int** p) ;
-
-#endif /* UPDATE_QUEUE_H */
-
-
-