From 070675250717f375d18e0d6860125735252e0a73 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Dubard?= <loic.dubard@ensiie.fr>
Date: Wed, 21 Nov 2018 10:45:10 +0100
Subject: [PATCH] =?UTF-8?q?pile=20affich=C3=A9e=20sur=20le=20c=C3=B4t?=
 =?UTF-8?q?=C3=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 obj/affichage.o   | Bin 12336 -> 15776 bytes
 src/affichage.c   |  68 ++++++++++++++++++++++++++++++++++++++++++----
 src/affichage.h   |  12 ++++++++
 src/deplacement.c |   2 +-
 stackchess        | Bin 36280 -> 37280 bytes
 5 files changed, 75 insertions(+), 7 deletions(-)

diff --git a/obj/affichage.o b/obj/affichage.o
index d523223d8a0a3a5b549648e9929317a67b8c9409..20c46e1b16f07270976f7bfbed2c5ea672a6bf84 100644
GIT binary patch
delta 4964
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
WN0vla^eOxdSvx!=^7pVWKjZ&geM6l9

delta 2262
zcmZ`)ZA@EL7{2F}(q3qRQslOU(J~xs$>;~Ll~Trs%?74wm=ibr7!<gyC46ixT^3kE
z2-z|qGmzI9iTnWf!^DpS)*qnDR4{H?VrDRLiDo~TQM1LwF=OVOn0Zd`xwE^|w`tFP
zpXYhs=e?)5r}HC=9n*HaShiGlFD>yKA4RQGt-m)<?Ylp5y?NrwEsjJIc>X>CZ#7R`
zdxY-W9N$2vKaU%m&+VnM75b4Z_{H!91P#1NGkx_7s)5UyH{fesDcJNjFzH>vf>*1m
z{S|&Uef4u0w!ls?He?IMZ9{|csI6O!*<Kc-Low%nQZEk1kBXGr5#wsrFs8TSwe-Zh
z`UX{7D4p8Tn3NU{&3&ojI0Ma4NTAnvCY<{MNlLm1hG)8SV`3jkcTFYJ!%SKwu^lW0
zzo7sH;gDflZP4_XGFT!tZJ|wrE~)G}BQ?y6aHxf6HhH}yfklJ0`B0Wyl^laea;Odk
z9*rHQISDj3n<kGPV1{97mOzQ*-vN!r0{m-Q;)wBQM0Nm*tMe^!wN!tRt(VxkJ4xds
zs>B;lUBFOeap(-%T(w#iJ*>{qhT)*)bzw$pRA*`1)agBHbx`Y8t4NNt@x*1zFoOQV
z*I>QSuL<?^M7qKvWNzC8R8$Z3MI!uIWJ0Il?;@*ZPI8xazcDN43=Zhi@oAk#OQy3V
zTC6r)EZ<@;(dKf9Yh)w-!D>&yx=k=lFt(a)%_N}heePqC!2ynqa4ga%a^2#P810V?
zh|%`QKzF1|j4?WNR3se|-){daZB)k`FhS_$b@HZ>&v3HS$tPs%p%iX~KKY0fP0j!4
zI~DpZ+MGn6gpYDcgR?1(%tR;~f23&iG)ng2mQ(cfA&~V~6#D&4zy6qh^xpy<+f8{V
zf~+8q;dD?T#h@$&&rQMGQ}Fy0Jf4D^WW12<>KR7J#%;`a8j2l)c~-#=G4_0tT~e^q
zjJ-%%m@jX@w-NkMe!~0=?M@;fEnEg!Gs!y+$DM-tPgZt7!M+a*P618A$Id3y2goIu
zJ6WGM70NvDxSH@C48ty`Wr>NtSBTaTtht=%CAjNqGGAk&UCdjaXdDi>n><5|?N+ci
z86H*O=i#cm34I0zkAT*|;b}rvIPMY5rA)u6(3iskVXGLcW2-!aAJ#p>vmY?ju3$G<
zFRuc(kfV!6y#ikbPlaGHGqg>?-p0^bvETd-Yr3MKGhnsCg#hkW2uKBdWjo%&&|B%W
zyd_V;T;<tsV7O4}MB{L?Qt-^OZXy%W8Vbor$0<ee2so<R&GNDH@CkOI%7rhf;hQR_
z`8)c9ATh#L+5amr?{>9LOC-0zSlM`4zD-5d2pjZ{0++v;dlZL|&uHM;4_Njafykcs
zEb_?n%$K&4ZZz?Vw-k|QV%2Ab`D#-JXOSdY4Xjn~!B|8893aPMmoHm<c3!KIL~p~G
z&&$tirK|xO{Z`oUnRsongxCSqc=3iFYHI3mNj40V#qEGk$Z{|n9@NzF<Jpq36IT5K
zeCX3chu?%d95C#!<A0(D2Z<eo^x}+sc;K(YJM)thwba^qJ3T;1tiV{Ump|!{vXih%
bvJJ+a1+>@8hv`{K0-%v(n@ssBAfNRguW_P-

diff --git a/src/affichage.c b/src/affichage.c
index 4a4893a..2c2b0f4 100644
--- a/src/affichage.c
+++ b/src/affichage.c
@@ -63,6 +63,63 @@ void affichecouleur(pile **tableau, int N)
   }
   printf("\n");
 }
+void affichetableau_pile_cote(pile **tableau, int N,char *sel)
+{
+  clrscr();
+  /**/
+  int x,y,nb=0;
+  if (*sel != '\0'){
+    determiner_indices(sel,N,&x,&y);
+    if (x>=0 && x<N && y>=0 && y<N)
+      nb=longueur_pile(tableau[x][y]);
+    else nb=0;
+  }
+  /**/
+  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]));
+      }
+    if (nb>0 && i>=N-nb)
+      affiche_pile_a_cote(tableau,sel,x,y,N,i,nb);
+    else if (i == N-1)printf("  Aucune selection");
+    printf("\n");
+  }
+  printf("\n");
+}
+
+void affiche_pile_a_cote(pile **tableau,char *sel,int x,int y,int N, int ligne,int nb)
+{
+  int k;
+  if (ligne == N-1) printf("  %s:",sel);
+    noeud* tmp=tableau[x][y].sommet; 
+    for (k=0 ; k<nb ; k++){
+        if (ligne==N-nb+k){
+          if (ligne != N-1) printf("     ");
+          affichepion(tmp->chaine,NOIR);
+        }
+        tmp=tmp->next;
+      }
+}
 
 void affichepion(char *pion,char *CASE)
 {
@@ -79,7 +136,6 @@ void affichepile(char *sel,pile **tableau,int N)
   else {
     int i,j;
     determiner_indices(sel,N,&i,&j);
-    //printf("(%d,%d)",i,j);
     if (i>=N || i<0 || j<0 || j>=N)
       printf("Aucune case n'est sélectionnée.");
     else {
@@ -96,12 +152,12 @@ void affichepile(char *sel,pile **tableau,int N)
 
 void affichage(pile **tableau,int N, char *sel,int tour,char *message)
 {
-  affichecouleur(tableau,N);
-  affichepile(sel,tableau,N);
+  //affichecouleur(tableau,N,sel);
+  //affichepile(sel,tableau,N);
+  affichetableau_pile_cote(tableau,N,sel);
   if (tour%2 == 0)
-    printf("\n C'est au tour des Verts.");
+    printf("\n [\x1B[1;5;32m%sGRIS" RESET "] %s",NOIR,message);
   else
-    printf("\n C'est au tour des Rouges.");
-  printf("\n%s",message);
+    printf("\n [\x1B[1;5;31m%sROUGES" RESET "] %s",NOIR,message);
 }
 
diff --git a/src/affichage.h b/src/affichage.h
index 088fe0f..4f53129 100644
--- a/src/affichage.h
+++ b/src/affichage.h
@@ -19,6 +19,18 @@ void affiche(pile **tableau, int N);
  */
 void affichecouleur(pile **tableau, int N);
 
+/*
+ * @require
+ * @assign 
+ * @ensure : affiche le tableau en couleur AVEC la pile selectionnée sur le côté.
+ */
+void affichetableau_pile_cote(pile **tableau,int N,char *sel);
+/*
+ * @require : nb le nombre d'élement de la pile >0
+ * @assign : \nothing
+ * @ensure : affiche l'élément de la pile selectionnée à afficher à côté de la ligne i du plateau 
+ */
+void affiche_pile_a_cote(pile **tableau,char *sel,int x,int y, int N, int ligne,int nb);
 /*
  * @require
  * @assign
diff --git a/src/deplacement.c b/src/deplacement.c
index 0f0c629..2c1c2c5 100644
--- a/src/deplacement.c
+++ b/src/deplacement.c
@@ -46,7 +46,7 @@ void case_destination(pile **tableau,int N,int i_src,int j_src, int *i_dest,int
   scanf("%3s",dest);
   if (dest[1] != '\0'){
     determiner_indices(dest,N,i_dest,j_dest);
-    if (*i_dest>=0 && *i_dest<N && *j_dest>=0 && *j_dest<N){
+    if (*i_dest>=0 && *i_dest<N && *j_dest>=0 && *j_dest<N && nb>nb_de_pion(tableau[*i_dest][*j_dest],"BN"[*tour%2+1])){
       noeud* tmp=tableau[i_src][j_src].sommet;
       int valide,i;
       for (i=0 ; i<nb ; i++){
diff --git a/stackchess b/stackchess
index 5eb5f7af7d3eff31cbd80af2700864647edf4edd..154ea31e394eb5a9234e15493fd5c56c53f78b8d 100755
GIT binary patch
delta 6183
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

delta 4349
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

-- 
GitLab