diff --git a/evenement.c b/evenement.c
index 867b40f..ec2585c 100644
--- a/evenement.c
+++ b/evenement.c
@@ -5,18 +5,27 @@
 #include <time.h>   
 
 
-void AfficherTimerEtScore(int m,int n,int score)   /*Afficher le temps passé et le score*/
+void AfficherTimerEtScore(long unsigned int *score, long unsigned int temps)   /*Afficher le temps passé et le score*/
 {   
     char buf[100];
-    char buff[100];
+    char buff[100]; /* Stockage du score et du timer */
     couleur j;
+    
+    time_t fin_temps;
+    long int timer;
+    int minutes,secondes;
+    fin_temps = time(NULL);  /* Gestion du timer et des variables */
+    timer = difftime(fin_temps, temps);
+    secondes = timer % 60;
+    minutes = timer / 60;
+
     j=CouleurParNom("yellow");
     ChoisirCouleurDessin(j);
 
 	ChoisirEcran(1);
 	CopierZone(2,1,0,0,930,710,0,0);
-	snprintf(buf,100,"temps : %02d:%02d",m,n);
-    snprintf(buff,100,"SCORE : %07d",score);
+	snprintf(buf,100,"TEMPS : %02d:%02d",minutes,secondes);
+    snprintf(buff,100,"SCORE : %07ld",*score);
 	EcrireTexte(60,650,buf,2);
     EcrireTexte(600,650,buff,2);
 	CopierZone(1,0,0,0,930,710,0,0);
@@ -32,30 +41,40 @@ void InitialiserPastilles(PIXELS *pastilles, PIXELS *serpent, int longueur_serpe
     srand(time(NULL));
 
     for (i = 0; i < PASTILLES; i++) {
-        pastilles[i] = gen_pastille(serpent,longueur_serpent);
+        pastilles[i] = gen_pastille(serpent,pastilles,longueur_serpent);
         RemplirRectangle(pastilles[i].x,pastilles[i].y,T_PIXEL,T_PIXEL);
 
     }
 }
 
+void MourrirSerpent(PIXELS *serpent, int longueur_serpent)
+{
+    int i = 0;
+    for(i=1;i<longueur_serpent;i++)
+    {
+        if(serpent[0].x == serpent[i].x && serpent[0].y == serpent[i].y )
+        {
+            FermerGraphique();
+        }
+    }
+}
+
 int MangerPastille(PIXELS *serpent, PIXELS* pastilles,unsigned long *score,int longueur_serpent)
     {
         couleur r;
         int i = 0;
-        int j = 0;
         r = CouleurParNom("red");
         ChoisirCouleurDessin(r);
         for(i=0;i<PASTILLES;i++)
         {
             if(serpent[0].x == pastilles[i].x && serpent[0].y == pastilles[i].y)
             {
-                pastilles[i] = gen_pastille(serpent,longueur_serpent);
+                pastilles[i] = gen_pastille(serpent,pastilles,longueur_serpent);
                 RemplirRectangle(pastilles[i].x,pastilles[i].y,T_PIXEL,T_PIXEL);
                 *score+=5;
                 return 1;
             }
         }
-
     return 0;    
     }
 
@@ -97,6 +116,7 @@ void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur)
         tempY = tempY2;
     }
     ChoisirCouleurDessin(g);
+
     RemplirRectangle(serpent[longueur-1].x,serpent[longueur-1].y,T_PIXEL,T_PIXEL);
 
 
diff --git a/evenement.h b/evenement.h
index 2d397c4..5c3e9af 100644
--- a/evenement.h
+++ b/evenement.h
@@ -9,9 +9,11 @@ void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur);
 
 void InitialiserPastilles(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent);
 
-void AfficherTimerEtScore(int m,int n,unsigned long *score);
+void AfficherTimerEtScore(long unsigned int *score, long unsigned int temps);
 
 int PastilleSurSerpent(PIXELS pastille, PIXELS *serpent, int longueur_serpent);
 
+void MourrirSerpent(PIXELS *serpent, int longueur_serpent);
+
 
 #endif
\ No newline at end of file
diff --git a/evenement.o b/evenement.o
index 46b8640..b05ca1f 100644
Binary files a/evenement.o and b/evenement.o differ
diff --git a/main.c b/main.c
index 9a6b51c..d1d464e 100644
--- a/main.c
+++ b/main.c
@@ -18,7 +18,7 @@ int ArrondirPixel(int nombre) /* Calcule un arrondi du pixel pour pouvoir respec
     return arrondi;
 }
 
-PIXELS gen_pastille(PIXELS *serpent,int longueur_serpent)
+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*/
                                    /*Générer une pastille dans la grid*/
@@ -34,13 +34,12 @@ PIXELS gen_pastille(PIXELS *serpent,int longueur_serpent)
         y_pastille = ArrondirPixel(rand()%H_GAME);
         for(i=0;i<longueur_serpent;i++)
         {
-            if(x_pastille == serpent[i].x && y_pastille == serpent[i].y)
+            if(x_pastille == serpent[i].x && y_pastille == serpent[i].y && x_pastille == pastilles[i].x && y_pastille == pastilles[i].y )
             {
-                ok = 1;
+                ok = 1; /* Check si la pastille se genère sur une coordonné du serpent ou d'une pastille existante */
             }
 
-        }      
-
+        }       
     }while(ok);
 
     if(x_pastille < DECALEMENT)
@@ -101,13 +100,15 @@ void DessinerScene(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent) /*
 int main()
 {   
     unsigned char pause = 0;
-    unsigned long *score =0;
+    unsigned long score =0;
     unsigned long suivant;
     int go_on=1;
     int n = 0;
     int m = 0;
+    
+    time_t temps;
 
-    size_t longueur_serpent = 200;
+    size_t longueur_serpent = 12;
     size_t longueur_pastilles = PASTILLES;
     PIXELS *serpent = (PIXELS *)malloc(longueur_serpent * sizeof(PIXELS));
     PIXELS *pastilles = (PIXELS *)malloc(longueur_pastilles * sizeof(PIXELS));
@@ -115,6 +116,8 @@ int main()
     int direction = 0;
     int direction_davant = 0;
 
+    temps = time(NULL); /*Première mesure du temps*/
+
     if(serpent == NULL) {
         fprintf(stderr, "Erreur d'allocation de mémoire.\n");
         return EXIT_FAILURE;
@@ -189,11 +192,12 @@ int main()
                         n=0;
                     }
 
-                AfficherTimerEtScore(m,n,score);
+                AfficherTimerEtScore(&score,temps);
+
                 suivant=Microsecondes()+delta;
 
                 direction_davant = direction; /* Check si le serpent à le droit de changer de direction */
-
+                MourrirSerpent(serpent,longueur_serpent);
                 DeplacementSerpent(direction,serpent,longueur_serpent);
                 if(MangerPastille(serpent,pastilles,&score,longueur_serpent) == 1)
                 {
diff --git a/main.h b/main.h
index 67e5cc9..cd48c04 100644
--- a/main.h
+++ b/main.h
@@ -19,6 +19,6 @@ struct PIXELS {
 
 typedef struct PIXELS PIXELS;
 
-PIXELS gen_pastille(PIXELS *serpent,int longueur_serpent);
+PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,int longueur_serpent);
 
 #endif
diff --git a/main.o b/main.o
index 4772387..e91cbd1 100644
Binary files a/main.o and b/main.o differ
diff --git a/prog b/prog
index 5af8e29..dce928b 100755
Binary files a/prog and b/prog differ
diff --git a/test.c b/test.c
new file mode 100644
index 0000000..d8d1319
--- /dev/null
+++ b/test.c
@@ -0,0 +1,26 @@
+#include <stdio.h>
+#include <time.h>
+
+void afficherTemps(double secondes) {
+    int minutes = (int)(secondes / 60);
+    int secondesRestantes = (int)(secondes) % 60;
+
+    printf("%02d:%02d\n", minutes, secondesRestantes);
+}
+
+int main(void)
+{
+    time_t start, end;
+    double cpu_time_used;
+
+    start = time(NULL);
+
+    end = time(NULL);
+
+    cpu_time_used = difftime(end, start);
+
+    printf("Le programme a pris : ");
+    afficherTemps(cpu_time_used);
+
+    return 0;
+}