diff --git a/Makefile b/Makefile
index c2f7e77e1a5bf69317a7ded79f0752d7b8df41dd..ad42cc26a96f67c2958a79605157b96db436deef 100644
--- a/Makefile
+++ b/Makefile
@@ -1,13 +1,13 @@
 CC=gcc -Wall -Wextra -ansi -g -std=c99
 
-stackchess :  main.o tableau.o affichage.o action.o
+stackchess :  main.o tableau.o affichage.o action.o deplacement.o
 	cd obj && $(CC) $^ -o ../$@
 
 main.o : src/main.c
 	$(CC) -c $< -o ./obj/$@
 
 
-affichage.o : src/affichage.c src/couleur.h
+affichage.o : src/affichage.c src/affichage.h src/couleur.h 
 	$(CC) -c $< -o ./obj/$@
 
 %.o: src/%.c src/%.h
diff --git a/obj/main.o b/obj/main.o
index 2a10c6ea5675f17db156b156f9cb01760037e95a..9a3d11526c522ad45c8a55eb46a92e765dafeb15 100644
Binary files a/obj/main.o and b/obj/main.o differ
diff --git a/obj/tableau.o b/obj/tableau.o
index b62cc85da7d295b0582d0ad5ee5b138195cc5bb1..5c5044a14e8f3a001d27defb681abd88e8f6ab97 100644
Binary files a/obj/tableau.o and b/obj/tableau.o differ
diff --git a/src/action.c b/src/action.c
index 286d76a58fc93f68a2f1a8e58f6a87d2714704fe..42ab26c60ddd34a70547baf0d9bd14d478c3ef2a 100644
--- a/src/action.c
+++ b/src/action.c
@@ -2,8 +2,8 @@
 #include<stdlib.h>
 #include"tableau.h"
 #include"affichage.h"
-
-
+#include"deplacement.h"
+/*action.c*/
 
 
 
@@ -23,11 +23,18 @@ void realiser(char action,pile **tableau,int N,char *cases)
       break;
     case 'd' :
       printf("d");
+      char couleur='N';
+      deplacement(tableau,N,cases,couleur);
       break;
     case 'a' : 
-      nettoyer(tableau,N);
-      printf("\n Vous allez quitter le jeu");
-      exit(0);
+      printf("\n Voulez vous quitter le jeu (y|n)? \n");
+      char c;
+      scanf("%1s",&c);
+      if (c == 'y'){
+        nettoyer(tableau,N);
+        printf("\n Vous allez quitter le jeu");
+        exit(0);
+      }
       break;
     default : 
       printf("Spécial");
diff --git a/src/main.c b/src/main.c
index 8893657709a0b8c924479564465d17b88f56a3cb..d1186ecec125df029d887e49120d596cdb1f1053 100644
--- a/src/main.c
+++ b/src/main.c
@@ -11,11 +11,7 @@ int main(int argc, char **argv)
     N=strtol(argv[1],NULL,10);
   } 
   pile **tableau=initialisation(N);
-  empiler(tableau[0]+1,"RB");
-  empiler(tableau[0], "RN");
-  empiler(tableau[0]+2,"DB");
-  empiler(tableau[0]+3,"DN");
-  empiler(tableau[0],"TB");
+  debut_partie(tableau,N);
   char action;
   char sel[4]="\0\0\0\0";
   while (1){ 
diff --git a/src/tableau.c b/src/tableau.c
index 5c47002fb775b4524a821058b7fae3593f67349e..699b6888772b61f81c93ff2d29713de75bd78863 100644
--- a/src/tableau.c
+++ b/src/tableau.c
@@ -60,13 +60,33 @@ void reset(pile *p)
 void nettoyer(pile **tableau,int N)
 {
   int i,j;
-  for (i=0 ; i<N ; i++){
+  for (i=0 ; i<N ; i++)
     for (j=0 ; j<N ; j++)
       reset(&(tableau[i][j]));
-  }
   for (i=0 ; i<N ; i++)
     free(tableau[i]);
   free(tableau);
   
 }
 
+void debut_partie(pile **tableau, int N)
+{
+  int j;
+  empiler(tableau[0]+N/2-1,"DN");
+  empiler(tableau[0]+N/2,"RN");
+  empiler(tableau[N-1]+N/2-1,"DB");
+  empiler(tableau[N-1]+N/2,"RB");
+  for (j=0 ; j<N ; j++){
+    empiler(tableau[1]+j,"PN");
+    empiler(tableau[N-2]+j,"PB");
+    if (j != N/2-1 && j != N/2){
+      if (j%2 == 0){
+        empiler(tableau[0]+j,"FN");
+        empiler(tableau[N-1]+j,"FB");
+      } else {
+        empiler(tableau[0]+j,"TN");
+        empiler(tableau[N-1]+j,"TB");
+      }
+    }
+  }
+}
diff --git a/src/tableau.h b/src/tableau.h
index 52be8e28c7ebf911af1630537e5e6e98bf8d3457..8194227155099b5e0d8fb92a71b1e485170d9195 100644
--- a/src/tableau.h
+++ b/src/tableau.h
@@ -40,14 +40,14 @@ int est_vide(pile p);
 char *sommet(pile p);
 
 /*
- @
- @
- @
+ @require elt doit être de taille 2
+ @assign alloue un nouveau pointeur vers une structure noeud 
+ @empile empile un pion sur une case du plateau 
 */
 void empiler(pile *p, char *elt);
 
 /*
- * @require
+ * @require la pile à dépiler doit être non vide
  * @assign
  * @ensure enlève le sommet de la pile p et le retourne
 */
@@ -61,10 +61,17 @@ char *depiler(pile *p);
 void reset(pile *p);
 
 /*
- * @require
+ * @require le tableau est supposé être passé par la fonction initialisation() 
  * @assign
  * @ensure nettoie la mémoire allouée au tableau 
 */
 void nettoyer(pile **tableau,int N);
 
+/*
+ * @require 
+ * @assign
+ * @ensure posent les pions sur le plateau en debut de partie
+ */
+void debut_partie(pile **tableau,int N);
+
 #endif 
diff --git a/stackchess b/stackchess
index 45f0baf8e2d22ac5db59ee1dd54bef98df9b5a8d..0558c9da4e095c2bca2164b4e393676d85322182 100755
Binary files a/stackchess and b/stackchess differ