diff --git a/snake/deplacement.c b/snake/deplacement.c
index 8f8d690..a4d09e6 100644
--- a/snake/deplacement.c
+++ b/snake/deplacement.c
@@ -10,61 +10,8 @@
 #include "update_queue.h"
 
 
-int** deplacement(int* p, int timer)  {
+void deplacement(int** p, int* tete, int* queue)  {
 
-  int i, j;
-
-  int* tete = NULL, queue = NULL;
-
-  char sens;
-
-
-
-
-
-  /* avancement du serpent */
-
-  
-
-
-
-
-
-
-
-
-
-
-
-
-  
-  /* alloacation des tableau tete et queue qui prendront les coordonnées de la tête et la queue */
-
-  tete = malloc(2*sizeof(short int));
-
-  queue = malloc(2*sizeof(short int));
-
-
-  /* recherche de la tête et la queue dans le tableau */
-
-  for ( i = 0; i < LIGNES; i++)  {
-
-    for ( j = 0; j < COLONNES; j++)  {
-
-      if ( p[i][j] == -1) {
-
-	tete[0] = i;
-	tete[1] = j;
-
-      }
-      if ( p[i][j] == -2) {
-
-	queue[0] = i;
-	queue[1] = j;
-
-      }
-    }
-  }
   
 
 		
@@ -81,6 +28,8 @@ int** deplacement(int* p, int timer)  {
       p[queue[0]][queue[1]] = 0;
 
       tete[1] = tete[1] - 1;
+
+      sens = "gauche";
 	
     }
 
@@ -94,9 +43,11 @@ int** deplacement(int* p, int timer)  {
 
       tete[1] = tete[1] + 1;
 
+      sens = "droite";
+
     }
 
-    if (Touch() == XK_Up")  {
+    if (Touch() == XK_Up)  {
 
       p[tete[0]][tete[1]] = 0;
 
@@ -106,9 +57,10 @@ int** deplacement(int* p, int timer)  {
 
       tete[0] = tete[0] - 1;
 
+      sens = "haut";
     }
 
-    if (Touch() == "XK_down")  {
+    if (Touch() == XK_down)  {
 
       p[tete[0]][tete[1]] = 0;
 
@@ -116,7 +68,55 @@ int** deplacement(int* p, int timer)  {
 
       p[queue[0]][queue[1]] = 0;
 
-      tete[0] = tete[0] + 1; 
+      tete[0] = tete[0] + 1;
+
+      sens = "bas";
+
+    }
+
+    else  {
+
+      if ( strcmp(sens,"bas") == 1)  {
+
+	p[tete[0] + 1][tete[1]] = 1;
+
+	p[queue[0]][queue[1]] = 0;
+
+	tete[0] = tete[0] + 1;
+      }
+
+      if ( strcmp(sens, "haut") ==1)  {
+
+	p[tete[0] - 1][tete[1]] = 1;
+
+	p[queue[0]][queue[1]] = 0;
+
+	tete[0] = tete[0] -1;
+
+      }
+
+      if ( strcmp(sens, "droite") ==1)  {
+
+	p[tete[0]][tete[1] + 1] = 1;
+
+	p[queue[0]][queue[1]] = 0;
+
+	tete[1] = tete[1] + 1;
+
+      }
+
+      if ( strcmp(sens, "gauche") ==1)  {
+
+	p[tete[0]][tete[1] - 1] = 1;
+
+	p[queue[0]][queue[1]] = 0;
+
+	tete[1] = tete[1] - 1;
+
+      }
+
+	
+      
       
     /* mise à jour de la position de queue dans le plateau */
     
diff --git a/snake/deplacement.h b/snake/deplacement.h
new file mode 100644
index 0000000..06b657c
--- /dev/null
+++ b/snake/deplacement.h
@@ -0,0 +1,8 @@
+
+
+#ifndef DEPLACEMENT_H
+#define DEPLACEMENT_H
+
+void deplacement (int** p, int* tete, int* queue);
+
+#endif /* DEPLACEMENT_H */
diff --git a/snake/fenetre.c b/snake/fenetre.c
index 4bb7689..37d3cff 100755
--- a/snake/fenetre.c
+++ b/snake/fenetre.c
@@ -8,9 +8,11 @@
 #include "plateau_init.h"
 #include "ajout_score.c"
 
+#define CYCLE 1000000L
 
 
-int start (void)  {
+
+void start (void)  {
 
   couleur green, grey, yellow, red, black, white;
 
@@ -18,7 +20,6 @@ int start (void)  {
 
   int i, j;
 
-  
   char* texte1 = "espace = lancer";
   
   char* texte2 = "espace = pause";
@@ -142,8 +143,6 @@ int start (void)  {
 
 
 
-  
-  return EXIT_SUCCESS;
 
 }
 
diff --git a/snake/fenetre.h b/snake/fenetre.h
index 71bb7b5..00a40b6 100644
--- a/snake/fenetre.h
+++ b/snake/fenetre.h
@@ -6,6 +6,6 @@
 #define FENETRE_H
 
 
-int start (void);
+void start (void);
 
 #endif /* FENETRE_H */ 
diff --git a/snake/lancement b/snake/lancement
deleted file mode 100755
index 72b5952..0000000
Binary files a/snake/lancement and /dev/null differ
diff --git a/snake/main.c b/snake/main.c
index c9dea1b..4a3dba1 100644
--- a/snake/main.c
+++ b/snake/main.c
@@ -3,6 +3,9 @@
 #include <graph.h>
 #include "fenetre.h"
 #include "plateau_init.h"
+#include "search_tete.h"
+#include "search_queue.h"
+#include "deplacement.h"
 
 
 
@@ -10,7 +13,28 @@
 
 int main(void)  {
 
- InitialiserGraphique();
+  short int jeu = 1;
+
+  int** plateau = plateau_init();
+
+  unsigned long suivant;
+
+  int* tete = NULL, queue = NULL;
+
+  char sens = "bas";
+
+  
+  /* alloacation des tableau tete et queue qui prendront les coordonnées de la tête et la queue */
+
+  tete = malloc(2*sizeof(short int));
+
+  queue = malloc(2*sizeof(short int));
+
+  
+
+  suiavnt = Microsencondes() + CYCLE;
+
+  InitialiserGraphique();
 
   /*initialisation de la taille de la fenetre de jeux*/
 
@@ -19,6 +43,15 @@ int main(void)  {
 
   start();
 
+  while ( jeu = 1)  {
+
+    if (Microsecondes() > suivant) {
+
+    
+      deplacement(plateau, tete, queue);
+
+      
+    }
 
   
   Touche();
diff --git a/snake/search_queue.c b/snake/search_queue.c
new file mode 100644
index 0000000..6d79009
--- /dev/null
+++ b/snake/search_queue.c
@@ -0,0 +1,31 @@
+
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "plateau_init.h"
+
+
+int* search_queue( int* queue, int** p)  {
+
+  int i, j;
+
+   /* recherche de la tête et la queue dans le tableau */
+
+  for ( i = 0; i < LIGNES; i++)  {
+
+    for ( j = 0; j < COLONNES; j++)  {
+
+      if ( p[i][j] == -2) {
+
+	queue[0] = i;
+	queue[1] = j;
+
+	p[i][j] = 1; 
+
+      }
+    }
+  }
+
+  return queue;
+
+}
diff --git a/snake/search_tete.c b/snake/search_tete.c
new file mode 100644
index 0000000..735e39b
--- /dev/null
+++ b/snake/search_tete.c
@@ -0,0 +1,38 @@
+
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "plateau_init.h" 
+
+
+
+
+int* search_tete(int* tete, int** p) {
+
+
+  int i, j;
+
+
+
+  
+  /* recherche de la tête et la queue dans le tableau */
+
+  for ( i = 0; i < LIGNES; i++)  {
+
+    for ( j = 0; j < COLONNES; j++)  {
+
+      if ( p[i][j] == -1) {
+
+	tete[0] = i;
+	tete[1] = j;
+
+	p[i][j] = 1; 
+
+      }
+    }
+  }
+
+  return tete;
+
+}
+
diff --git a/snake/search_tete.h b/snake/search_tete.h
new file mode 100644
index 0000000..e69de29
diff --git a/snake/update_queue.c b/snake/update_queue.c
index 3b08b93..7496d58 100644
--- a/snake/update_queue.c
+++ b/snake/update_queue.c
@@ -7,7 +7,7 @@
 #include <stdio.h>
 
 
-int maj_queue(int* queue, int** p)  {
+void maj_queue(int* queue, int** p)  {
 
   if ( p[queue[0] +1 ][queue[1]] == 1 ) {
 
@@ -31,7 +31,5 @@ int maj_queue(int* queue, int** p)  {
     queue[1] = queue[1] -1;
 
   }
-  
-  return EXIT_SUCCESS;
 
 }