diff --git a/evenement.c b/evenement.c
index 6c39fb1..205e53a 100644
--- a/evenement.c
+++ b/evenement.c
@@ -26,7 +26,7 @@ void AfficherTimerEtScore(long unsigned int *score, int minutes,int secondes)
 	CopierZone(1,0,0,0,930,710,0,0);
 }
 
-int MourrirSerpent(PIXELS *serpent, int longueur_serpent)
+int MourrirSerpent(PIXELS *serpent,PIXELS *obstacle, int longueur_serpent,int longueur_obstacle)
 {
     int i = 0;
     for(i=1;i<longueur_serpent;i++)
@@ -36,6 +36,13 @@ int MourrirSerpent(PIXELS *serpent, int longueur_serpent)
             return 1;
         }
     }
+    for(i=1;i<longueur_obstacle;i++)
+    {
+        if(serpent[0].x == obstacle[i].x && serpent[0].y == obstacle[i].y )
+        {
+            return 1;
+        }
+    }
     if (serpent[0].x<=0 || serpent[0].x>W_GAME || serpent[0].y<=0 || serpent[0].y>H_GAME)
     {
         return 1;
@@ -43,14 +50,14 @@ int MourrirSerpent(PIXELS *serpent, int longueur_serpent)
     return 0;
 }
 
-int MangerPastille(PIXELS *serpent, PIXELS* pastilles,unsigned long *score,int longueur_serpent,unsigned long int *vitesse)
+int MangerPastille(PIXELS *serpent, PIXELS* pastilles,PIXELS *obstacle,unsigned long *score,int longueur_serpent,unsigned long longueur_obstacle,unsigned long int *vitesse)
     {
         int i = 0;
         for(i=0;i<PASTILLES;i++)
         {
             if(serpent[0].x == pastilles[i].x && serpent[0].y == pastilles[i].y)
             {
-                pastilles[i] = gen_pastille(serpent,pastilles,longueur_serpent);
+                pastilles[i] = gen_pastille(serpent,pastilles,obstacle,longueur_serpent,longueur_obstacle);
                 ChargerImage("./images/PommePastille.png",pastilles[i].x,pastilles[i].y,0,0,T_PIXEL,T_PIXEL);
                 *score+=5;
                 *vitesse/=1.008;
@@ -106,14 +113,14 @@ void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur)
     }
 }
 
-int Serpent(PIXELS *serpent,PIXELS *pastilles,unsigned long *score,unsigned long *longueur_serpent,unsigned long int *vitesse,int direction)
+int Serpent(PIXELS *serpent,PIXELS *pastilles,PIXELS *obstacle,unsigned long *score,unsigned long *longueur_serpent,int longueur_obstacle,unsigned long int *vitesse,int direction)
 {
-    if(MourrirSerpent(serpent,*longueur_serpent) == 1)
+    if(MourrirSerpent(serpent,obstacle,*longueur_serpent,longueur_obstacle) == 1)
     {
         return 2;
     }
     DeplacementSerpent(direction,serpent,*longueur_serpent);
-    if(MangerPastille(serpent,pastilles,score,*longueur_serpent,vitesse) == 1)
+    if(MangerPastille(serpent,pastilles,obstacle,score,*longueur_serpent,longueur_obstacle,vitesse) == 1)
     {
         *longueur_serpent+=2;
         return 1;
diff --git a/evenement.h b/evenement.h
index ea85f25..a003f57 100644
--- a/evenement.h
+++ b/evenement.h
@@ -3,19 +3,17 @@
 #ifndef EVENEMENT_H
 #define EVENEMENT_H
 
-int MangerPastille(PIXELS *serpent, PIXELS* pastilles,unsigned long int *score,int longueur_serpent,unsigned long int *vitesse);
+int MangerPastille(PIXELS *serpent, PIXELS* pastilles,PIXELS *obstacle,unsigned long *score,int longueur_serpent,unsigned long longueur_obstacle,unsigned long int *vitesse);
 
 void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur);
 
-void InitialiserPastilles(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent);
-
 void AfficherTimerEtScore(long unsigned int *score,int minutes,int secondes);
 
 int PastilleSurSerpent(PIXELS pastille, PIXELS *serpent, int longueur_serpent);
 
-int MourrirSerpent(PIXELS *serpent, int longueur_serpent);
+int MourrirSerpent(PIXELS *serpent,PIXELS *obstacle, int longueur_serpent,int longueur_obstacle);
 
-int Serpent(PIXELS *serpent,PIXELS *pastilles,unsigned long *score,unsigned long *longueur_serpent,unsigned long int *vitesse,int direction);
+int Serpent(PIXELS *serpent,PIXELS *pastilles,PIXELS *obstacle,unsigned long *score,unsigned long *longueur_serpent,int longueur_obstacle,unsigned long int *vitesse,int direction);
 
 
 #endif
\ No newline at end of file
diff --git a/gui.h b/gui.h
index f121cad..39a4d68 100644
--- a/gui.h
+++ b/gui.h
@@ -1,7 +1,7 @@
 #ifndef GUI_H
 #define GUI_H
 
-void Menu(unsigned long *bestscore);
+void Menu();
 void PerduGUI(unsigned long *bestscore)
 ;void Pause(unsigned long *bestscore);
 void Reinitialiser();
diff --git a/images/Danger.png b/images/Danger.png
new file mode 100644
index 0000000..598c703
Binary files /dev/null and b/images/Danger.png differ
diff --git a/images/Danger.png:Zone.Identifier b/images/Danger.png:Zone.Identifier
new file mode 100644
index 0000000..053d112
--- /dev/null
+++ b/images/Danger.png:Zone.Identifier
@@ -0,0 +1,3 @@
+[ZoneTransfer]
+ZoneId=3
+HostUrl=about:internet
diff --git a/main.c b/main.c
index 7aef171..7361f89 100644
--- a/main.c
+++ b/main.c
@@ -27,8 +27,11 @@ int main()
 
     size_t longueur_serpent = 10;
     size_t longueur_pastilles = PASTILLES;
+    size_t longueur_obstacle = OBSTACLE;
     PIXELS *serpent = (PIXELS *)malloc(longueur_serpent * sizeof(PIXELS));
     PIXELS *pastilles = (PIXELS *)malloc(longueur_pastilles * sizeof(PIXELS));
+    PIXELS *obstacle = (PIXELS *)malloc(longueur_obstacle * sizeof(PIXELS));
+
 
     int direction = 0;
     int direction_davant = 0;
@@ -41,11 +44,16 @@ int main()
         fprintf(stderr, "Erreur d'allocation de mémoire.\n");
         return EXIT_FAILURE;
     }
+    if(obstacle == NULL) {
+        fprintf(stderr, "Erreur d'allocation de mémoire.\n");
+        return EXIT_FAILURE;
+    }
+
 
     InitialiserGraphique();
     CreerFenetre(10,10,W_WINDOW,H_WINDOW); /* Peut être changer cette ligne avec la fonction Maxx et Maxy fournie dans graph.h ??*/
     ChoisirTitreFenetre("SNAKE SAE11 IN C");
-    DessinerScene(pastilles,serpent,longueur_serpent);
+    DessinerScene(pastilles,serpent,obstacle,longueur_serpent,longueur_pastilles,longueur_obstacle);
     while(window_on)
     {
         if(perdu == 1)
@@ -80,7 +88,7 @@ int main()
                         longueur_serpent = 10;
                         direction = 0;
                         direction_davant = 0;
-                        DessinerScene(pastilles,serpent,longueur_serpent);
+                        DessinerScene(pastilles,serpent,obstacle,longueur_serpent,longueur_pastilles,longueur_obstacle);
                         break;
                     case XK_Escape:
                         free(serpent);
@@ -175,7 +183,7 @@ int main()
                         AfficherTimerEtScore(&score,minutes,secondes);
                         direction_davant = direction; /* Check si le serpent à le droit de changer de direction */
 
-                        valeur_retourne = Serpent(serpent,pastilles,&score,&longueur_serpent,&vitesse,direction);
+                        valeur_retourne = Serpent(serpent,pastilles,obstacle,&score,&longueur_serpent,longueur_obstacle,&vitesse,direction);
                         if(valeur_retourne == 1)
                         {
                         }
diff --git a/main.h b/main.h
index cd48c04..9a665a5 100644
--- a/main.h
+++ b/main.h
@@ -8,6 +8,7 @@
 #define T_PIXEL 15
 #define DECALEMENT 30
 #define PASTILLES 5
+#define OBSTACLE 100
 
 
 
@@ -19,6 +20,6 @@ struct PIXELS {
 
 typedef struct PIXELS PIXELS;
 
-PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,int longueur_serpent);
+PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,PIXELS *obstacle,int longueur_serpent,int longueur_obstacle);
 
 #endif
diff --git a/scene.c b/scene.c
index 4c14736..10a5056 100644
--- a/scene.c
+++ b/scene.c
@@ -16,7 +16,7 @@ int ArrondirPixel(int nombre) /* Calcule un arrondi du pixel pour pouvoir respec
     return arrondi;
 }
 
-PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,int longueur_serpent)
+PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,PIXELS *obstacle,int longueur_serpent,int longueur_obstacle)
 
                                    /* 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*/
@@ -40,6 +40,18 @@ PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,int longueur_serpent)
             }
 
         }       
+        for(i=0;i<longueur_obstacle;i++)
+        {
+            if(x_pastille == obstacle[i].x && y_pastille == obstacle[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)
@@ -59,6 +71,61 @@ PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,int longueur_serpent)
     return pastille;
 }
 
+PIXELS gen_obstacle(PIXELS *serpent,PIXELS *pastilles,PIXELS *obstacle,int longueur_serpent,int longueur_pastilles)
+
+                                   /* 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_obstacles,y_obstacles,i;
+    int ok = 0;
+    PIXELS obstacles;
+    do{
+        ok = 0;
+        x_obstacles= ArrondirPixel(rand()%W_GAME);
+        y_obstacles = ArrondirPixel(rand()%H_GAME);
+        for(i=0;i<longueur_serpent;i++)
+        {
+            if(x_obstacles == serpent[i].x && y_obstacles == serpent[i].y)
+            {
+                ok = 1; /* Check si la pastille se genère sur une coordonné du serpent */
+            }
+            if(x_obstacles == obstacle[i].x && y_obstacles == obstacle[i].y)
+            {
+                ok = 1;
+            }
+
+        }       
+        for(i=0;i<longueur_pastilles;i++)
+        {
+            if(x_obstacles == pastilles[i].x && y_obstacles == pastilles[i].y)
+            {
+                ok = 1; /* Check si la pastille se genère sur une coordonné du serpent */
+            }
+            if(x_obstacles == obstacle[i].x && y_obstacles == obstacle[i].y)
+            {
+                ok = 1;
+            }
+
+        }       
+    }while(ok);
+
+    if(x_obstacles < DECALEMENT)
+    {
+        x_obstacles =+ DECALEMENT;
+    }
+
+    if(y_obstacles < DECALEMENT)
+    {
+        y_obstacles =+ DECALEMENT;
+    }
+
+
+    obstacles.x = x_obstacles ;
+    obstacles.y = y_obstacles ;
+
+    return obstacles;
+}
+
 void InitialisationDuSerpent(PIXELS *p_serpent) /* L'initialisation du serpent */
 {
     int x_millieu = 0, y_millieu = 0 , compteur = 0;
@@ -78,18 +145,29 @@ void InitialisationDuSerpent(PIXELS *p_serpent) /* L'initialisation du serpent *
     }
 }
 
-void InitialiserPastilles(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent) {
+void InitialiserPastilles(PIXELS *pastilles, PIXELS *serpent,PIXELS *obstacle, int longueur_serpent,int longueur_obstacle) {
     int i;
 
     srand(time(NULL));
 
     for (i = 0; i < PASTILLES; i++) {
-        pastilles[i] = gen_pastille(serpent,pastilles,longueur_serpent);
+        pastilles[i] = gen_pastille(serpent,pastilles,obstacle,longueur_serpent,longueur_obstacle);
         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 */
+void InitialiserObstacle(PIXELS *pastilles, PIXELS *serpent,PIXELS *obstacle, int longueur_serpent,int longueur_pastilles) {
+    int i;
+
+    srand(time(NULL));
+
+    for (i = 0; i < OBSTACLE; i++) {
+        obstacle[i] = gen_obstacle(serpent,pastilles,obstacle,longueur_serpent,longueur_pastilles);
+        ChargerImage("./images/Danger.png",obstacle[i].x,obstacle[i].y,0,0,T_PIXEL,T_PIXEL);
+    }
+}
+
+void DessinerScene(PIXELS *pastilles, PIXELS *serpent,PIXELS *obstacle, int longueur_serpent,int longueur_pastilles,int longueur_obstacle) /* Dessine la scène */
 {
     couleur bg;
     couleur border;
@@ -108,6 +186,7 @@ void DessinerScene(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent) /*
 
     ChoisirCouleurDessin(bg);
     RemplirRectangle(T_PIXEL,T_PIXEL,W_GAME,H_GAME);
-    InitialiserPastilles(pastilles,serpent,longueur_serpent);
     InitialisationDuSerpent(serpent);
+    InitialiserPastilles(pastilles,serpent,obstacle,longueur_serpent,longueur_obstacle);
+    InitialiserObstacle(pastilles,serpent,obstacle,longueur_serpent,longueur_pastilles);
 }
\ No newline at end of file
diff --git a/scene.h b/scene.h
index e7ffc2e..c2c7d02 100644
--- a/scene.h
+++ b/scene.h
@@ -3,8 +3,11 @@
 #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);
+PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,PIXELS *obstacle,int longueur_serpent,int longueur_obstacle);
+PIXELS gen_obstacle(PIXELS *serpent,PIXELS *pastilles,PIXELS *obstacle,int longueur_serpent,int longueur_pastilles);
+
+void InitialiserPastilles(PIXELS *pastilles, PIXELS *serpent,PIXELS *obstacle, int longueur_serpent,int longueur_obstacle);
+void InitialiserPastilles(PIXELS *pastilles, PIXELS *serpent,PIXELS *obstacle, int longueur_serpent,int longueur_obstacle);
+void DessinerScene(PIXELS *pastilles, PIXELS *serpent,PIXELS *obstacle, int longueur_serpent,int longueur_pastilles,int longueur_obstacle);
 
 #endif
\ No newline at end of file