diff --git a/Makefile b/Makefile
index 69f450de409f8481315f5d7a8761eb053554ba42..da9164448d710b0cad63b38d82349bcb85d0a859 100644
--- a/Makefile
+++ b/Makefile
@@ -3,15 +3,18 @@ WIN32=i686-w64-mingw32-gcc
 WIN64=x86_64-w64-mingw32-gcc
 CFLAGS=-Wall -Wextra -ansi -g -lm -std=c99
 
-stackchess :  main.o tableau.o affichage.o action.o deplacement.o
+stackchess :  main.o tableau.o affichage.o affichageold.o action.o deplacement.o
 	cd obj && $(CC) $(CFLAGS) $^ -o ../build/$@
 
+play: stackchess
+	build/stackchess
+
 all: stackchess stackchess32.exe stackchess64.exe clean
 
-affichage.o : src/affichage.c src/affichage.h src/couleur.h 
+affichage.o : src/affichage.c src/affichage.h src/couleur.h
 	$(CC) $(CFLAGS) -c $< -o ./obj/$@
 
-affichage32.o : src/affichage.c src/affichage.h src/couleur.h 
+affichage32.o : src/affichage.c src/affichage.h src/couleur.h
 	$(WIN32) $(CFLAGS) -c $< -o ./obj/$@
 
 affichage64.o : src/affichage.c src/affichage.h src/couleur.h 
@@ -26,10 +29,10 @@ affichage64.o : src/affichage.c src/affichage.h src/couleur.h
 %.o: src/%.c src/%.h
 	$(CC) $(CFLAGS) -c $< -o obj/$@
 
-stackchess32.exe :  main32.o tableau32.o affichage32.o action32.o deplacement32.o
+stackchess32.exe :  main32.o tableau32.o affichage32.o affichageold32.o action32.o deplacement32.o
 	cd obj && $(WIN32) $(CFLAGS) $^ -o ../build/$@
 
-stackchess64.exe : main64.o tableau64.o affichage64.o action64.o deplacement64.o
+stackchess64.exe : main64.o tableau64.o affichage64.o affichageold64.o action64.o deplacement64.o
 	cd obj && $(WIN64) $(CFLAGS) $^ -o ../build/$@
 
 clean :
diff --git a/README.md b/README.md
index da7741936dca25e4c04c04ad00756807d79e350f..eb0a4a35a1c7cd6e1dc4844428bb359418e9ac1a 100644
--- a/README.md
+++ b/README.md
@@ -82,7 +82,9 @@ On ne peut pas sauter par dessus une pièce (mais on peut se placer dessus si el
 # 3. Conseils d'utilisation
 ==================================================================================
 
-Voici différentes commandes qui vont permettrons dde compiler et de jouer au jeu Stackchess en mode console :
+Le rapport du projet se trouve à "doc/rapport.pdf" et les fichiers sources (.c et .h) se trouvent dans le répertoire "src".
+
+Voici différentes commandes qui vont permettrons de compiler et de jouer au jeu Stackchess en mode console :
 
 
 **Entrez dans votre console** : 
@@ -92,6 +94,9 @@ Voici différentes commandes qui vont permettrons dde compiler et de jouer au je
 > make play
 
 **Pour compiler le jeu pour windows :** 
+ Pour créer des executables windows (sous linux) vous devez installer le compilateur cross-platform mingw :
+
+> sudo apt-get install mingw-w64
 > make all
 
 
diff --git a/build/stackchess b/build/stackchess
index 950a3c386a1654fdd6cb52a9be75aea9992b789b..fa7607a8c48d77164ce435484a68d7ee1e3a2358 100755
Binary files a/build/stackchess and b/build/stackchess differ
diff --git a/build/stackchess32.exe b/build/stackchess32.exe
index b43378ac450cb1e626bdd5c206010a05443e5aa0..0cee438d18a949b97f42a9cccf4c2bee1241287c 100755
Binary files a/build/stackchess32.exe and b/build/stackchess32.exe differ
diff --git a/build/stackchess64.exe b/build/stackchess64.exe
index cdfa6db91b065775f2eb8fbaf4dd41a2586523c0..59f31fa2ad0af925f884788c422fab98e9c8b180 100755
Binary files a/build/stackchess64.exe and b/build/stackchess64.exe differ
diff --git a/doc/latex/affichagenonansi.jpg b/doc/latex/affichagenonansi.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..52ffba2231838b69fba070715548e2ddf11e914b
Binary files /dev/null and b/doc/latex/affichagenonansi.jpg differ
diff --git a/doc/latex/rapport.pdf b/doc/latex/rapport.pdf
index cee9f92617c9ab2a7cf5d22305af97896711b6f0..dbd19544ba14db83e4fd787fb2bcd707c3995b77 100644
Binary files a/doc/latex/rapport.pdf and b/doc/latex/rapport.pdf differ
diff --git a/doc/latex/rapport.tex b/doc/latex/rapport.tex
index 4f0a844fea324ebc54138a232d6966c1ceec0f23..a6f290ced95bc9f9150d67a040ee0f27f6dda0db 100644
--- a/doc/latex/rapport.tex
+++ b/doc/latex/rapport.tex
@@ -72,6 +72,18 @@ Les différentes opérations implémentées sur le plateau sont :
 	\item deplacer les pièces du plateau si le déplacement est légal
 \end{itemize}
 \subsection{La gestion de l'affichage}
+Il existe deux mode d'affichage : avec ou sans coloration.\\
+
+Pour accéder au mode d'affichage il suffit de mettre comme second argument d'exécution du programme un 0 si on ne veut pas de couleur et un 1 sinon. Le premier argument correspond à la taille du plateau.
+
+\paragraph{Affichage sans couleurs :}
+Il s'agit de celui présenté dans l'énoncé du sujet avec des barres verticales et des tirets pour délimiter les cases : 
+\begin{figure}[H]
+	\centering
+	\includegraphics[scale=1]{affichagenonansi.jpg}
+\end{figure}
+
+\paragraph{Affichage en couleurs :}
 L'affichage se fait en mode terminal, en utilisant les séquences d'echappement ANSI pour avoir de la couleur : 
 \begin{minted}{C}
 #define clrscr() printf("\033[H\033[2J") //rafraichi l'écran
diff --git a/doc/rapport.pdf b/doc/rapport.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..dbd19544ba14db83e4fd787fb2bcd707c3995b77
Binary files /dev/null and b/doc/rapport.pdf differ
diff --git a/src/action.c b/src/action.c
index d6fe8827f04339b3fb0f96a752c3380ed41c9de2..a57c01fef0e7b5ddb3c2739339ad39c7b79a54a6 100644
--- a/src/action.c
+++ b/src/action.c
@@ -8,12 +8,12 @@
 
 
 
-void realiser(char action,pile **tableau,int N,char *cases,int *tour)
+void realiser(char action,pile **tableau,int N,char *cases,int *tour,int ansi)
 {
   char sel[4]="\0\0\0\0";
   switch (action){
     case 'c' :
-      affichage(tableau,N,cases,*tour,"Entrez les coordonnées de la case à selectionner >");
+      affichage(tableau,N,cases,*tour,"Entrez les coordonnées de la case à selectionner >",ansi);
       scanf("%3s",sel);
       viderbuffer();
       if (sel[1] != '\0'){
@@ -21,10 +21,10 @@ void realiser(char action,pile **tableau,int N,char *cases,int *tour)
       }
       break;
     case 'd' :
-      deplacement(tableau,N,cases,tour);
+      deplacement(tableau,N,cases,tour,ansi);
       break;
     case 'a' : 
-      affichage(tableau,N,cases,*tour,"\n Voulez vous abandonner le jeu (y|n)? \n");
+      affichage(tableau,N,cases,*tour,"\n Voulez vous abandonner le jeu (y|n)? \n",ansi);
       char c;
       scanf("%1s",&c);
       if (c == 'y'){
diff --git a/src/action.h b/src/action.h
index d681cb598121b04464596ca577795d040d3baf08..9b6e9f0a6294591173291757c984bcda817d9f7e 100644
--- a/src/action.h
+++ b/src/action.h
@@ -4,4 +4,4 @@
  * @assign
  * @ensure fait entrer dans le bon mode (abandon, selection ou déplacement)
  */
-void realiser(char action,pile **tableau,int N,char *cases,int *tour);
+void realiser(char action,pile **tableau,int N,char *cases,int *tour,int ansi);
diff --git a/src/affichage.c b/src/affichage.c
index 7b315106da10561cb9bcf7e94183103b4674bcab..3d815f4661d6928648602f4809b31295cd0afe22 100644
--- a/src/affichage.c
+++ b/src/affichage.c
@@ -3,6 +3,7 @@
 #include"affichage.h"
 #include"couleur.h"
 #include<math.h>
+#include"affichageold.h"
 /*affichage.c*/
 void viderbuffer()
 {
@@ -79,12 +80,21 @@ void affichetableau_pile_cote(pile **tableau, int N,char *sel)
 }
 
 
-void affichage(pile **tableau,int N, char *sel,int tour,char *message)
+void affichage(pile **tableau,int N, char *sel,int tour,char *message,int ansi)
 {
-  affichetableau_pile_cote(tableau,N,sel);
-  if (tour%2 == 0)
-    printf("\n [\x1B[1;5;32m%sBLANCS" RESET "] %s",NOIR,message);
-  else
-    printf("\n [\x1B[1;5;31m%sNOIRS" RESET "] %s",NOIR,message);
+  if (ansi == 1){
+    affichetableau_pile_cote(tableau,N,sel);
+    if (tour%2 == 0)
+      printf("\n [\x1B[1;5;32m%sBLANCS" RESET "] %s",NOIR,message);
+    else
+      printf("\n [\x1B[1;5;31m%sNOIRS" RESET "] %s",NOIR,message);
+  } else {
+    affiche(tableau,N);
+    affichepile(sel,tableau,N);
+    if (tour%2 == 0)
+      printf("\n [BLANCS] %s",message);
+    else
+      printf("\n [NOIRS] %s",message);
+  }
 }
 
diff --git a/src/affichage.h b/src/affichage.h
index aee85fe738fc465400bc78576121700d00eb3dd0..2d47fdbffd63344aff76af7d2d46cac259549992 100644
--- a/src/affichage.h
+++ b/src/affichage.h
@@ -2,6 +2,7 @@
 #define _AFFICHAGE
 
 #include"tableau.h"
+#include"affichageold.h"
 
 /*affichage.h*/
 
@@ -37,5 +38,5 @@ void affichepion(char *pion,char* CASE);
  * @assign
  * @ensure combine affichetableau_pile_cote() et l'affichage du message destiné à l'utilisateur
  */
-void affichage(pile **tableau,int N,char *sel,int tour,char *message);
+void affichage(pile **tableau,int N,char *sel,int tour,char *message,int ansi);
 #endif
diff --git a/src/affichageold.c b/src/affichageold.c
index 674c448c670fae146903a9673f7df12330ee70b4..8b6f78b5fd06d77acd446888c387c8ade28a83fb 100644
--- a/src/affichageold.c
+++ b/src/affichageold.c
@@ -10,7 +10,7 @@ void affiche(pile** tableau, int N)
   int i,j;
   printf(" ");
   for(i=0 ; i<N ; i++){
-    printf(" %c ",'a'+i);
+    printf(" %c ",'A'+i);
   }
   printf("\n");
   for (i=0 ; i<N ; i++){
@@ -47,14 +47,14 @@ void affichecouleur(pile **tableau, int N)
       if ((i+j)%2 == 1){
         if (est_vide(tableau[i][j]))
           printf(NOIR "  " RESET);
-        else if (tableau[i][j].sommet->chaine[1] == 'N')
+        else if (tableau[i][j]->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')
+        else if (tableau[i][j]->chaine[1] == 'N')
           printf(PNOIRE BLANC"%c " RESET, *sommet(tableau[i][j]));
         else
           printf(PBLANCHE BLANC"%c " RESET, *sommet(tableau[i][j]));
@@ -75,9 +75,9 @@ void affichepile(char *sel,pile **tableau,int N)
       printf("Aucune case n'est sélectionnée.");
     else {
       printf("%s:\n",sel);
-      noeud* tmp=tableau[i][j].sommet; 
+      pile tmp=tableau[i][j]; 
       while (tmp != NULL){
-        affichepion(tmp->chaine,NOIR);
+        printf("%s",tmp->chaine);
         tmp=tmp->next;
         printf("\n");
       }
diff --git a/src/affichageold.h b/src/affichageold.h
index 055db69d7c5b3040897f90546b643fe94e20bc24..de1288f6d6a7d2e3059c10512440cafe3e51933a 100644
--- a/src/affichageold.h
+++ b/src/affichageold.h
@@ -1,10 +1,10 @@
-#ifndef _AFFICHAGE
-#define _AFFICHAGE
+#ifndef _AFFICHAGEOLD
+#define _AFFICHAGEOLD
 
 #include"tableau.h"
 
 /*affichageold.h*/
-/*contient les vielles fonctions d'affichage*/
+/*contient les fonctions d'affichage non compatible ANSI*/
 /*
  * @require \nothing
  * @assign \nothing
diff --git a/src/deplacement.c b/src/deplacement.c
index 11fd4e6a6a4a621b96b1856e53416bfa35d7210b..41a7da1ace6c31e67ab89ff380b891c2087646a1 100644
--- a/src/deplacement.c
+++ b/src/deplacement.c
@@ -6,7 +6,7 @@
 //#include<unistd.h>
 /*deplacement.c*/
 
-void deplacement(pile **tableau, int N, char *sel, int *tour)
+void deplacement(pile **tableau, int N, char *sel, int *tour,int ansi)
 {
   if (*sel != '\0'){
     int i,j;
@@ -14,11 +14,11 @@ void deplacement(pile **tableau, int N, char *sel, int *tour)
     if (i>=N || i<0 || j>=N || j<0)
       printf("\nCase sélectionnée hors du tableau.");
     else if (sommet(tableau[i][j])[1] == "BN"[*tour%2]){
-      affichage(tableau,N,sel,*tour,"Combien de pions à déplacer >");
+      affichage(tableau,N,sel,*tour,"Combien de pions à déplacer >",ansi);
       int nb=nb_a_selectionner(tableau,i,j,tour);
       if (nb>0){
         int i_dest,j_dest; 
-        affichage(tableau,N,sel,*tour,"Entrez les coordonnées de la case de destination>");
+        affichage(tableau,N,sel,*tour,"Entrez les coordonnées de la case de destination>",ansi);
         case_destination(tableau,N,i,j,&i_dest,&j_dest,nb,tour);
       }
     } else 
diff --git a/src/deplacement.h b/src/deplacement.h
index d6c3a3d0067a85fff823a7493f0d94707190342e..41db2ced4be154de3139daf209669a6eeb2088f5 100644
--- a/src/deplacement.h
+++ b/src/deplacement.h
@@ -10,7 +10,7 @@
  * @assign
  * @ensure détermine si le déplacement est légal ou pas et l'effectue si c'est le cas
  */
-void deplacement(pile **tableau,int N, char *sel, int *tour);
+void deplacement(pile **tableau,int N, char *sel, int *tour,int ansi);
 
 /*
  * @require
diff --git a/src/main.c b/src/main.c
index d8b4aa8dd1f1c3b93a6b4ef15b52422402415ddf..a9b38b64cbc0f6e7dd559c948f8fdd33d1f78d42 100644
--- a/src/main.c
+++ b/src/main.c
@@ -7,9 +7,11 @@
 
 int main(int argc, char **argv)
 {
-  int N = 6;
+  int N = 6,ansi=1;
   if (argc != 1){
     N=strtol(argv[1],NULL,10);
+    if (argc == 3)
+      ansi=strtol(argv[2],NULL,10);
   } 
   pile **tableau=initialisation(N);
   debut_partie(tableau,N);
@@ -17,9 +19,9 @@ int main(int argc, char **argv)
   int tour=0;
   char sel[4]="\0\0\0\0";
   while (! partie_finie(tableau, N,tour)){ 
-    affichage(tableau,N,sel,tour,"Entrez une action (c,d,a) >");
+    affichage(tableau,N,sel,tour,"Entrez une action (c,d,a) >",ansi);
     scanf("%c",&action);
-    realiser(action,tableau,N,sel,&tour);
+    realiser(action,tableau,N,sel,&tour,ansi);
   }
   nettoyer(tableau,N);
   return 0;