diff --git a/.gitignore b/.gitignore
index cba7efc8efd27eebb82aa22d38d6dabc0b6e903b..4d37d303942b9350be7fb5f2c7b101ad1152cc2a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
 a.out
+obj/*
diff --git a/Makefile b/Makefile
index d7a105c21a003490517f5cf3ad95135df09ede90..fb67bf3f67b21278209ba0ddae0daa193bc2d4f1 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-CC=gcc -Wall -Wextra -ansi
+CC=gcc -Wall -Wextra -ansi -g -std=c99
 
 stackchess :  main.o tableau.o affichage.o
 	cd obj && $(CC) $^ -o ../$@
@@ -6,6 +6,10 @@ stackchess :  main.o tableau.o affichage.o
 main.o : src/main.c
 	$(CC) -c $< -o ./obj/$@
 
+
+affichage.o : src/affichage.c src/couleur.h
+	$(CC) -c $< -o ./obj/$@
+
 %.o: src/%.c src/%.h
 	$(CC) -c $< -o obj/$@
 
diff --git a/obj/affichage.o b/obj/affichage.o
index e86c05005ee87b10d46e42d89b070b9fa69fc406..03ac6e4ac6746c821f36950b76d322066814e47e 100644
Binary files a/obj/affichage.o and b/obj/affichage.o differ
diff --git a/obj/main.o b/obj/main.o
index 83f308b5febfbd49ff1ad342670fcc623cd4076c..74d76029f69338a80620f4437b9ae73dffa108d1 100644
Binary files a/obj/main.o and b/obj/main.o differ
diff --git a/obj/tableau.o b/obj/tableau.o
index 1937f871456d0a771a097810b4fefb0042dba670..b62cc85da7d295b0582d0ad5ee5b138195cc5bb1 100644
Binary files a/obj/tableau.o and b/obj/tableau.o differ
diff --git a/src/affichage.c b/src/affichage.c
index cb96d5fc7e83858dd6a740e89bf807f893d217e9..7f8a9d380b8738694c3466f01413ac4511982c2c 100644
--- a/src/affichage.c
+++ b/src/affichage.c
@@ -1,26 +1,65 @@
 #include<stdio.h>
 #include"tableau.h"
+#include"affichage.h"
+#include"couleur.h"
 /*affichage.c*/
 
 void affiche(pile** tableau, int N)
 {
-  int i,j,h;
+  clrscr();
+  int i,j;
+  printf(" ");
+  for(i=0 ; i<N ; i++){
+    printf(" %c ",'a'+i);
+  }
+  printf("\n");
   for (i=0 ; i<N ; i++){
-    for (h=0 ; h<N ; h++){
+    printf(" ");
+    for (j=0 ; j<N ; j++){
       printf("+--");
-      
-      if (h == N-1)printf("+\n");
     }
+
+    printf("+\n%i",N-i);
     for (j=0 ; j<N ; j++)
-      if (est_vide(tableau[i][j]))
-        printf("|  ");
-      else
-        printf("|%s", sommet(tableau[i][j]));
+      printf( "|%s", est_vide(tableau[i][j]) ? "  " :  sommet(tableau[i][j]));
     printf("|\n");
   }
+  printf(" ");
   for (i=0 ; i<N ; i++ ){
     printf("+--");
     if (i == N-1) printf("+");
   }
   printf("\n");
 }
+
+void affichecouleur(pile **tableau, int N)
+{
+  clrscr();
+  int i,j;
+  printf("  ");
+  for(i=0 ; i<N ; i++){
+    printf("%c ",'A'+i);
+  }
+  printf("\n");
+  for (i=0 ; i<N ; i++){
+    printf(N-i>9 ? "%i":" %i",N-i);
+    for (j=0 ; j<N ; j++)
+      if ((i+j)%2 == 1){
+        if (est_vide(tableau[i][j]))
+          printf(NOIR "  " RESET);
+        else if (tableau[i][j].sommet->chaine[1] == 'N')
+          printf(PNOIRE NOIR "%c " RESET, *sommet(tableau[i][j]));
+        else
+          printf(PBLANCHE NOIR"%c " RESET, *sommet(tableau[i][j]));
+      } else {
+        if (est_vide(tableau[i][j]))
+          printf(BLANC "  " RESET);
+        else if (tableau[i][j].sommet->chaine[1] == 'N')
+          printf(PNOIRE BLANC"%c " RESET, *sommet(tableau[i][j]));
+        else
+          printf(PBLANCHE BLANC"%c " RESET, *sommet(tableau[i][j]));
+      }
+    printf("\n");
+  }
+  printf("\n");
+}
diff --git a/src/affichage.h b/src/affichage.h
index 04c6bee4d46a5139bf4103e01413fd96f09b9b06..d014779935b447b65660fc27ca4dd915370f63f1 100644
--- a/src/affichage.h
+++ b/src/affichage.h
@@ -2,13 +2,22 @@
 #define _AFFICHAGE
 
 #include"tableau.h"
+
 /*affichage.h*/
 
 /*
- * @require
- * @assign
+ * @require \nothing
+ * @assign \nothing
  * @ensure effectue le rafraichissement de l'écran et l'affichage du jeu en terminal
 */
 void affiche(pile **tableau, int N);
 
+/*
+ * @require \nothing
+ * @assign \nothing
+ * @ensure affiche le tableau en couleur 
+ */
+void affichecouleur(pile **tableau, int N);
+
+
 #endif
diff --git a/src/couleur.h b/src/couleur.h
new file mode 100644
index 0000000000000000000000000000000000000000..1323b6daa83646cd84f4c95c4d73a6356ce80983
--- /dev/null
+++ b/src/couleur.h
@@ -0,0 +1,54 @@
+#ifndef _COULEUR_
+#define _COULEUR_ 
+
+#include <stdio.h>
+
+
+
+/**
+ * @file couleur.h
+ * 
+ * Ce fichier décrit un ensemble de fonctions concernant l'affichage interactif et amélioré du jeu.
+ * Il contient 7 directives de préprocesseur.
+ * 
+ */
+
+
+/**
+ * @brief nettoyer l'écran
+ */
+#define clrscr() printf("\033[H\033[2J") 
+
+/**
+ * @brief couleur noire du background
+ */
+#define NOIR   "\x1B[48;2;0;0;0m"
+
+/**
+ * @brief couleur VERT des pions blancs
+ */
+#define PBLANCHE "\x1B[0;32m"
+
+/**
+ * @brief couleur ROUGE des pions noirs
+ */
+#define PNOIRE "\x1B[0;31m"
+
+/**
+ * @brief couleur blanche du background 
+ */
+
+#define BLANC   "\x1B[48;2;255;255;255m"
+
+/**
+ * @brief revenir à la couleur par defaut
+ */
+#define RESET "\x1B[0m"
+
+/**
+ * @brief cacher le curseur
+ */
+#define HIDE "\e["
+
+
+#endif
diff --git a/src/main.c b/src/main.c
index ba9c7bf44ddd30a94245168444d17dec96add9ff..b6ee7faddda3973f7c2a5d6c421f6b6e1e5df12c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -11,9 +11,11 @@ int main(int argc, char **argv)
   } 
   
   pile **tableau=initialisation(N);
-  empiler(&(tableau[0][0]), "RN");
-  affiche(tableau,N);
-
+  empiler(tableau[0]+1,"RB");
+  empiler(tableau[0], "RN");
+  empiler(tableau[0]+2,"DB");
+  empiler(tableau[0]+3,"DN");
+  affichecouleur(tableau,N);
   nettoyer(tableau,N);
   return 0;
 }
diff --git a/stackchess b/stackchess
index e5a9c2526ef9436324f0ba3dde332545833abdbc..20256850c324160244ebdf068f264d88be8c80b5 100755
Binary files a/stackchess and b/stackchess differ