From 53f7a059710c190a15bf542c8f473488eb02b654 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Dubard?= <loic.dubard@ensiie.fr>
Date: Mon, 19 Nov 2018 14:36:18 +0100
Subject: [PATCH] =?UTF-8?q?enfin=20le=20deplacement=20des=20pi=C3=A8ces?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .gitignore        |   2 +
 obj/affichage.o   | Bin 11400 -> 12336 bytes
 obj/main.o        | Bin 7096 -> 7000 bytes
 obj/tableau.o     | Bin 10224 -> 11376 bytes
 src/action.c      |  15 +++---
 src/action.h      |   2 +-
 src/affichage.c   |  36 +++++++++----
 src/affichage.h   |   6 +++
 src/deplacement.c | 129 +++++++++++++++++++++++++++++++++++++++++++---
 src/deplacement.h |  64 ++++++++++++++++++++++-
 src/main.c        |   7 ++-
 src/tableau.c     |  21 ++++++++
 src/tableau.h     |  14 +++++
 stackchess        | Bin 28960 -> 36280 bytes
 14 files changed, 265 insertions(+), 31 deletions(-)

diff --git a/.gitignore b/.gitignore
index 4d37d30..5a1127b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
 a.out
 obj/*
+test.c
+stackchess
diff --git a/obj/affichage.o b/obj/affichage.o
index 3985760b38e53f8f2a5586eabb8f5cc7d47e4510..d523223d8a0a3a5b549648e9929317a67b8c9409 100644
GIT binary patch
delta 4207
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

delta 3251
zcmaKueNa?Y6u{qo>s#KkyTE?&mXBS&KX+k;(Llw7A@m7ZQrSQaAvvNY7%DK06YVJK
zxDh6vX2Oz2|7omjf?-OhOz|_P(GhT(p{8lXa>BxbsVS#0yZ62GXnB*JVfUVU&hLEO
z`!081|JuE^`?DoEi<^~FMJwf8oO58=av}J*+&Nh+hdRdOP}^{5&1Jc(Vl4V&Zr4!j
za;D0iL*$c48gq)p$)V3D)bVUr#bvoyUUW8?^gr0{p<t}sy_AKVU|&k`tz%SEf<hN%
z5RA59ol^C`OXZvkjfE<{$F`zR4RubGg(|LhQB$wn?YzL!Qs=NthUG4<Yt40e-Kc!#
zhC!Xnp^Ay0{M0`|opSd=h1M3KSW87YkwT~08r8LRc1&<>SN6-D=Zl}NJ2xmsBokOI
zx>B#s<2d?9MI`Lo!oI?#W$>(6W(ZapHDf^GIF20p&cJcDZR?vjQswTVZoWshGm2ED
zF&E!cYI}rE0_&*F&~q~AU`{4%ub4QW<4CoMx%r+aoX^uqnmSqSY;A7g$YYlIN}d|d
z%o)X7R5ywb7~oG!qSH^CR*RKm?TvQGwdOc?%sSE%)h=pmu)&%|T=1GTE=G-saA~f=
z6IL5pBrY~DF)uQ&bntGPR^SX#;Rc79*oZxX_Pc;H%t2jXiZ0|^j4&P>OCB2B6+Oxa
zmkP#KA%)}TkxD^g!%o4^2C-6bvav=ep#xtd6tZEb5MYCtEC{vYQ-Vco6QmNsx|3?j
zf~iu-C=t@$7NiYAyx1sME(zu~AtE3|inT(-r-Jz{fo$hRj*$A5kJdli)>yxOGyGyt
zfM|z2Sno*U2lu+%BsHCG@JnpJsVGmcEGlLXUv4#4bQ%m9#1bLGK&}@K`{uz+?AOFf
zSL1>OZs!5F7k-xPAiF0_+EZ_b2Dbzo<JyheTDP{o&;&Da+141Ec;=oena~g~fgGPs
zVxXC7P4O1es@RSywkz=g>bXljCGi%k8xIpZf)2<_SV4Vl2?6jYSjZ+APmthJ0?Txp
zYLnE~uh_B^nQc`f%haKKe~>7_u|x|DCzeo~)guu*WOxE|It#$GM}ikUEVhqoGad^J
zdD7#;yFW+I7!%fy9qxKqg*>lB98lp6%prF(go@gEx0jKhc_ldMwUAL5pxPZTtK>-v
z1j8$|3;)K^!#2BbefP1yi*}x}Or24~xxp|#JpV-<?<HKL5;A<BfZJjA@P?M*f4o*W
z4IkACw6lfBvWD=%*THo15`o<~2cRIu;bGc07~`Tk6J}$d3TR025fgN$ND5cNoK&<?
z;}*gh%(M|RRjS}@rb(Daq7R809nk?PscJWc=xNpwR;Wgzo-LNj%jz&&Wew~=A_9qn
zI-(v1kf=q^ppF=WaU|N&b45qI3AQw~)AP8NA9O?&lp(PK`{0q(c5E$dK>|ZLdH@vB
zh~sbsiFVAfSVv^Q2ol;(J*gu$07+Ln{Q`4r)e)~k0TSA+zfVWRLIV;<F~@s4;v?um
z;xAmxMIBKNXOOUCjvG264yKVvM&fTBkp(Fk>RR%Vh{sXevDcv*iE9{Jq$3Ql0|{*n
z59<gE3?MOzo<<!}3gbu=VwLxG#6GZPs-6Cdo(no670NOlt61NA(DSX1n8f*yI{P^8
z@Ex6f0*+wKt4Nseiqv-JCX67Vy*s4oh!Bu0M;zm|e#^rN$jg#4n719*{Y<!*+P}og
z>tQ@g3U=wdo3Z1gXlF^7=_KB3Q#zhtl|OX+S9qaE;i#?eH1ZzR9-O@te#f@*bOD`c
zUx0S4q2rjSO2=yp*r~JMLq0So4@Bie+79W^&5)DxAxz~o!=~I$n95BiEnxE%*<#p*
zPDRE$+YYt90N<~?uh8H7Y)!rH%Qp2Rvk+|lBG*m&y2IoeR#GNV;CDca-)*b$Ds!$E
zDLWkW2TUjM0F=Opzli_M3Xypa=1gU%=zMihUfN7l7jcdqa$9I}$&?<Ynq?TtOCn8B
z;FEHaGgX^LvR61W{pd4vKtaA_YO<+x6jbLYk-f~uZ+F5g`I)4LmEhlSvbQz5`WW&K
zO#38LuTzaU47NZLIl^kXim~Qe)unVD19btPs~CUFYVg>x>n#fU0zT7zNrgLLBv54P
L#SHz><4gJn4x=AW

diff --git a/obj/main.o b/obj/main.o
index 9a3d11526c522ad45c8a55eb46a92e765dafeb15..982deb19e71fb45fd96ce0099a364ee379963600 100644
GIT binary patch
delta 1496
zcmZ9MUr19?9LMk3-|O1uuFlTx_MpPFDZv<o>mgcF=7J;#N%@iv6^jH(8x<KL6gHON
z^(WDTAVLJb1Tspah$e*nfzSxj=)sAUV!;NH7KZ)qy=Og~AKdffd_Ujc?|069IJ4oU
zx{(0!C^db7`G$1?BV|_CWW!pjX+1jJvX)BhL{km9lf#-GP0lNys^uGqn$}V+h!VLI
z$?fF4R=YU`67d@>CJ2*qGM7F>+KhYV)P5Lbd<!xrFWG`GCST;QQ4kDDd#Of>MFq1#
zY16kZYlpTyThiavBM?cfGpO{mU=dRYETYkr-e*2U$Q)#Blo(*Zk}bE2ZnKy$n+1c3
zjH-+HOj{G$x(c_gwWiCxiN5qB>#70n+5&jK$F_d8Nsav`X@-!Uk~YZOJB;z}F6ec{
z<DKf^FmSq{-rlEfFb4GWU*Fl);}+9RnAMvU^ij_5Vf%3)PD-9b$Vp+u8IbQVU1HgW
zS^ZwXBKm4!!`VpcAyiCdw|XRuqk7U@s<R2=NZ%7(j&XDd6r|mZwsABJ8Kgg$+Q-qu
zkVkre%^l-t7Ajp-KE^sf<mfqwA<Z!QlB3sQ5a~76`7=kSU>a#NQ-5-_8nP}*y5P4f
zDBoip_Om&Kzt;lw5|wLNWt5|Ra0%&gR@=$ZDVUTfxd>0Cp!|z<80S1gKuV}Q!PHrf
zeuEIwD69R*(LBVFZZkE<(OpoGTG-j_EEn$OfDF=prUp1V3wfj~Og+WXF{mu1@+O;i
zfuqw9Lt4S;6ONX^AkwRhzUJrxOd~Zgy2{Zm$Rd5i)IS`32a=o0AK1Tg;0vKf;l8h+
z-c892w7P?GKkMJfc^<%|J4o7L5uIOQ!ySYLw<t|;t||zX(NGhc{+6RF+EhVU=Jcv`
zyzGklTrAp3;rm{{?TABnE(zeJb@&X$XarY<Mv4me_v>crw^g$f+f3l~)D?N0dTkC`
zJu^fENp2(-XqCg{ASiOAXwa(jO;|>)2PAKVBq8QiAF4%fBXNQ33l}Zfb=P@qOpnhG
KE?I>8zKVaYSMcNj

delta 1589
zcmZ9MTSydP6vyZ6dKou&*KIey#wAKvZ@sKrq!h|3A#OLQha#!SO;!@jT+J>Jne|X+
zmfIny2ug?^st0X}?DCKlT?i8&ilAQBhY}2NDTwZ!nK=W?cVNCV-~abN=R4m#%=@ab
z>Y;KtoT%uk8OT;B`Wt2kw*HO`G|czEi}b&k(KSQZG#?pkn2q$mvDC<5tq#ZZCGoV>
zx5+H*ndhq6i;iVzgMjV39m`=UOeQ0++g>`U`zhe+j9pPY#%r#tg|aQNk+=RCoXGN5
z&XK{EX!aT&x0*0KyBBuH+7&2Jt86;mq2#Co1aj1G_GDRh4ZtLhI|MAiqdBQ^RrO_O
zE4D1Spf9S|Ser85dyMyEcr<r;@^)^@hC_}3O?uDKtv9O3?}e=x$`=qd*1g7h2*>kV
z{IQn(J?*icE+yL9+Sal+*4fq`Q#!laIu5jAnKQa>mp(NGO{wT#c8R{Bh?_~tqO9NS
z_dhdEW$3;P{TvQE1zbXKiQ1d&v3eHqek7x|Fr)TWhAz<QS_vny-X*jLdIO3@W>OrK
z^``{mu12kfRV!Q6jZ;(`0TZuhmqlM8xP^9t>2`_k!4T0EtnQQO3`U8r=BbWJG>8eJ
zAGz~oiH32UXcMbRi9W_O(Sxi`Nb~>}7YOYJcm6EV4Y-A9F;8V<mv!G}>?;UD0!PWS
znLTSHPYI@oTDRRM(R%cF=ya~_l4vW|dxDV0IC)O6=a%HTg2P0odG6;DU5ishzpy$j
z(XR*#h4z!xzY+xu5mouzBF@&`J1|N#$u*4<{eTIg=b7%5=qDT}dWY4667^%6sFQ0S
zNwgb_y<**KR^LkW4}XVgNpI%;oTNX)KCjT8bCpUz8$GN$PT(lfCx)gdnndqn${U0Z
z^!Nl^!wO#zulrO_hvZ6O+!usxIP4SJGV4x~CxTPd<3kb_9nya}Qw}elEetqLJI#|-
zz=wrZ;Kp=enAVU8=efC4sc9Ag$0}BS+3}&M${TW-weRtVxQ~^76~`9WQSpz()$}6?
xY2myxxu)Y29?`0y6Gyc$3}RaAg%OMwH9{ReD5}m=d4}W0LHYgwyu^^d>_4>;2U`FD

diff --git a/obj/tableau.o b/obj/tableau.o
index 5c5044a14e8f3a001d27defb681abd88e8f6ab97..6656502d35d47551951fdca5d99e6a56502da20d 100644
GIT binary patch
delta 3148
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
XR6kAsnZf;r6wY>(YS>{&6&L&i+#=bb

delta 2051
zcmZ8iZ)jUp6u<W-ugy!+F7Ktu%L`3j61U|gDg85NgBr6`l(j{wg{g5k=hVuk6X&Q<
znb=hjWJPIu)VWc_4mQvVb_Qho=7gcnKdk5%nOf!tsr^tYL)oB+_r7<Y&U+xa_xyh6
z{LZ;I@13mI*YBUP*<$W&ao!IfC~5Yl0$(W>oAx(Xm74Ft!4`rxz}yX;JMAMx6Am3r
zial%8^%3smpX3;8?20}^=y0p+93(A)1s>B9=;z-NC#wQe!Dyw$@2OPcH>p%|p2`72
ztDcIGtg0@vpG4qt(2Q>50{S6B`*l%(HTIJZ*a)WdS;Px57q7>l6zZiBcr;{A{)A+v
z14(`C;5ea~)U?z4197LrT(B1<4aZNm3feR0?A)PqVa07B85O4!Ex7S9MYQUfgK>w>
zReCWY_HRN$MA1M%T!Ci`xS?}8Yz}V?x=n>br+u(1ynKsB_10SAox4pM<yWW>U;7=Q
zJ43gJhN6tC=^O|^y{+rsq3Hi2V<9ShLgL${6r-E&Fg=yL>E#_472u1uGJhICi^u87
zrqMo5gFQ;<yrPaPba(UZO-ag_58~Rg|M{^OpMtQy1$O9b&02Jb!c4~o&A=Nm3%2Du
zA!GZSUGWNoFB22ggobG}XUz8*40hJ(c9`$nOE&{e8RlN<9)B2bA;?$pxdMHheGA#T
z#E!$hR8QXqqK74R1Rvg4B>Wz@z%|!U^Mu5Xz#pj|`W<A`J@j1|O&j!6IKcP)a3Z}E
z4p{+MNk{0ja3j5wJ_G}np)O&a!_a3LFk#tLfqBa?KSumRtmK{PBUrKw_7{OwtJ}PR
z<gZc?fxe7kwxYz}659^@I2%JYiK|y&78;zrh&g46Rp3I#7@9}+K8d}C_#+bjBl=HE
zcn@T=hMC2z1&MtPMmhT@q8BArgQ=`BbOg~~Bz6t`RSCa}KiG8%UxBMxBY6c`6<;my
zPL>(yxo&zC266`bhQaP!_vCZf^<z?O12x7F7h$5<Fjjn7ir<6yClWq|_<2d^lv{U_
zT$U0%p;kVygn7-6p-?;GUPCY80dAGzA4a??#hZvf;oy^e2Js?7`!*y%68a4bpOl2Y
z7u|9DR*LV$_@5=*yXlpib;R5Jxg$eJ8=sNFyc3^6p#<Vyqu!LfONx)+O%4hiUa+Iu
zt5U?CW?{=F+B~{7LffXX4W}fWwWF|@PpHHhxrCg9rF@xv?TkM@z-({(xVt@OSJmH9
zfWK*Z3)by~dd`{Ygw#MQl-ZFW3>T`bB@D;-ay<i=3e{MD*r`X}!?XQYy|<WPb{2+<
zRrQB<H^_oUvCOV%aH&{j5nYU8$dqg~qPu(sMoZ;jE$e!p5tuFYtG)ccL0BD@N@ex+
TnCne|)>T$X&h-{Sv#oysjL-sP

diff --git a/src/action.c b/src/action.c
index 42ab26c..0c1d6a1 100644
--- a/src/action.c
+++ b/src/action.c
@@ -8,31 +8,28 @@
 
 
 
-void realiser(char action,pile **tableau,int N,char *cases)
+void realiser(char action,pile **tableau,int N,char *cases,int *tour)
 {
   char sel[4]="\0\0\0\0";
   switch (action){
     case 'c' :
-      affichecouleur(tableau,N);
-      affichepile(cases,tableau,N);
-      printf("\nEntrez les coordonnées de la case à selectionner >");
+      affichage(tableau,N,cases,*tour,"Entrez les coordonnées de la case à selectionner >");
       scanf("%3s",sel);
       if (sel[1] != '\0'){
         strcpy(cases,sel);
       }
       break;
     case 'd' :
-      printf("d");
-      char couleur='N';
-      deplacement(tableau,N,cases,couleur);
+      deplacement(tableau,N,cases,tour);
       break;
     case 'a' : 
-      printf("\n Voulez vous quitter le jeu (y|n)? \n");
+      affichage(tableau,N,cases,*tour,"\n Voulez vous quitter le jeu (y|n)? \n");
       char c;
       scanf("%1s",&c);
       if (c == 'y'){
-        nettoyer(tableau,N);
+        affichecouleur(tableau,N);
         printf("\n Vous allez quitter le jeu");
+        nettoyer(tableau,N);
         exit(0);
       }
       break;
diff --git a/src/action.h b/src/action.h
index cc1c9b5..d681cb5 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);
+void realiser(char action,pile **tableau,int N,char *cases,int *tour);
diff --git a/src/affichage.c b/src/affichage.c
index d3ebf40..4a4893a 100644
--- a/src/affichage.c
+++ b/src/affichage.c
@@ -74,16 +74,34 @@ void affichepion(char *pion,char *CASE)
 
 void affichepile(char *sel,pile **tableau,int N)
 { 
-  if (*sel == '\0' || strtol(sel+1,NULL,10)>N || strtol(sel+1,NULL,10)<1)
-    printf("Aucune case n'est sélectionnée.");
+  if (*sel == '\0') 
+    printf("Aucune case n'est sélectionnée");
   else {
-    printf("%s:\n",sel);
-    int i=N-strtol(sel+1,NULL,10),j=*sel-'A';
-    noeud* tmp=tableau[i][j].sommet; 
-    while (tmp != NULL){
-      affichepion(tmp->chaine,NOIR);
-      tmp=tmp->next;
-      printf("\n");
+    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 {
+      printf("%s:\n",sel);
+      noeud* tmp=tableau[i][j].sommet; 
+      while (tmp != NULL){
+        affichepion(tmp->chaine,NOIR);
+        tmp=tmp->next;
+        printf("\n");
+      }
     }
   }
 }
+
+void affichage(pile **tableau,int N, char *sel,int tour,char *message)
+{
+  affichecouleur(tableau,N);
+  affichepile(sel,tableau,N);
+  if (tour%2 == 0)
+    printf("\n C'est au tour des Verts.");
+  else
+    printf("\n C'est au tour des Rouges.");
+  printf("\n%s",message);
+}
+
diff --git a/src/affichage.h b/src/affichage.h
index 71ddfc7..088fe0f 100644
--- a/src/affichage.h
+++ b/src/affichage.h
@@ -32,4 +32,10 @@ void affichepion(char *pion,char* CASE);
  */
 void affichepile(char* sel, pile **tableau, int N);
 
+/*
+ * @require
+ * @assign
+ * @ensure combine affichecouleur() et affichepile()
+ */
+void affichage(pile **tableau,int N,char *sel,int tour,char *message);
 #endif
diff --git a/src/deplacement.c b/src/deplacement.c
index c3aab91..0f0c629 100644
--- a/src/deplacement.c
+++ b/src/deplacement.c
@@ -1,14 +1,131 @@
+#include<unistd.h>
 #include"tableau.h"
-
+#include"affichage.h"
+#include"deplacement.h"
 /*deplacement.c*/
 
-void deplacement(pile **tableau, int N, char *sel, char couleur)
+void deplacement(pile **tableau, int N, char *sel, int *tour)
+{
+  if (*sel != '\0'){
+    int i,j;
+    determiner_indices(sel,N,&i,&j);
+    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 >");
+      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>");
+        case_destination(tableau,N,i,j,&i_dest,&j_dest,nb,tour);
+      }
+    } else 
+      printf("\nDéplacement non autorisé");
+    char c;
+    printf("\n");
+    //scanf("%1s",&c);
+    read(0,&c,1);//attend la touche entrer
+  }
+}
+
+
+int nb_a_selectionner(pile **tableau,int i,int j,int *tour)
 {
-  int i=N-strtol(sel+1,NULL,10),j=*sel-'A';
-  if (*sel == '\0' || strtol(sel+1,NULL,10)>N || strtol(sel+1,NULL,10)<1)
-    printf("Aucune case n'est sélectionnée.");
-  else {
+  int nb;
+  scanf("%d",&nb);
+  if (nb<=nb_de_pion(tableau[i][j],"BN"[*tour%2]) && nb>0)
+    return nb;
+  else
+    printf("\nVous n'avez pas rentré un nombre valide.");
+  return 0;
+}
 
+void case_destination(pile **tableau,int N,int i_src,int j_src, int *i_dest,int *j_dest,int nb,int *tour)
+{
+  char dest[4]="\0\0\0\0";
+  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){
+      noeud* tmp=tableau[i_src][j_src].sommet;
+      int valide,i;
+      for (i=0 ; i<nb ; i++){
+        switch (tmp->chaine[0]){
+          case 'P' :
+            valide=pions(i_src,j_src,*i_dest,*j_dest);
+            break;
+          case 'R' :
+            valide=roi(i_src,j_src,*i_dest,*j_dest);
+            break;
+          case 'D' :
+            valide=dames(i_src,j_src,*i_dest,*j_dest);
+            break;
+          case 'T' :
+            valide=tours(i_src,j_src,*i_dest,*j_dest);
+          case 'F' :
+            valide=fous(i_src,j_src,*i_dest,*j_dest);
+          case 'C' :
+            valide=cavaliers(i_src,j_src,*i_dest,*j_dest);
+          default :
+            valide=0;
+        }
+        if (! valide)
+          break;
+        tmp=tmp->next;
+      }
+      if (valide){
+        effectuer(tableau,i_src,j_src,*i_dest,*j_dest,nb);
+        *tour=*tour+1;
+      } else {
+        printf("Déplacement illégal pour au moins un pion de la pile");
+      }
+    }
   }
 }
 
+int pions(int i_src,int j_src,int i_dest,int j_dest)
+{
+  return 0;
+}
+
+int dames(int i_src,int j_src,int i_dest,int j_dest)
+{
+  return 0;
+}
+
+int roi(int i_src,int j_src,int i_dest,int j_dest)
+{
+  if (i_dest==i_src)
+    if (j_dest==j_src-1 || j_dest==j_src+1)
+      return 1;
+  if (i_dest==i_src+1 || i_dest==i_src-1)
+    if (j_dest==j_src+1 || j_dest==j_src || j_dest==j_src-1)
+      return 1;
+  return 0;
+}
+int tours(int i_src,int j_src,int i_dest,int j_dest)
+{
+  return 0;
+}
+
+int fous(int i_src,int j_src,int i_dest, int j_dest)
+{
+  return 0;
+}
+
+int cavaliers(int i_src,int j_src,int i_dest,int j_dest)
+{
+  return 0;
+}
+
+void effectuer(pile **tableau,int i_src,int j_src, int i_dest,int j_dest,int nb)
+{
+  pile p;
+  int i;
+  for (i=0 ; i<nb ; i++){
+    empiler(&p,depiler(tableau[i_src]+j_src));
+  }
+  for (i=0 ; i<nb ; i++){
+    empiler(tableau[i_dest]+j_dest,depiler(&p));
+  }
+}
diff --git a/src/deplacement.h b/src/deplacement.h
index 0b45be1..1d8032c 100644
--- a/src/deplacement.h
+++ b/src/deplacement.h
@@ -8,8 +8,68 @@
 /*
  * @require
  * @assign
- * @ensure détermine si le déplacement est légal ou pas 
+ * @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 *cases, char couleur);
+void deplacement(pile **tableau,int N, char *sel, int *tour);
 
+/*
+ * @require
+ * @assign
+ * @ensure verifie si le nombre de pièce à deplacer de la case selectionnées est valide 
+ */
+int nb_a_selectionner(pile **tableau,int i,int j,int *tour);
+
+/*@require
+ * @assign
+ * @ensure : verifie si les coordonnées de la case destination est valide pour toutes les pièces à déplacer
+ */
+void case_destination(pile **tableau,int N,int i_src,int j_src,int *i_dest,int *j_dest,int nb,int *tour); 
+
+/*
+ * @require
+ * @assign
+ * @ensure : verifie que le déplacement est valide pour un pion
+ */
+int pions(int i_src,int j_src,int i_dest,int j_dest);
+
+/*
+ * @require
+ * @assign
+ * @ensure : verifie que le déplacement est valide pour un roi
+ */
+int roi(int i_src,int j_src,int i_dest,int j_dest);
+
+/*
+ * @require
+ * @assign
+ * @ensure : verifie que le déplacement est valide pour une dame
+ */
+int dames(int i_src,int j_src,int i_dest,int j_dest);
+
+/*
+ * @require
+ * @assign
+ * @ensure : verifie que le déplacement est valide pour une tour
+ */
+int tours(int i_src,int j_src,int i_dest,int j_dest);
+
+/*
+ * @require
+ * @assign
+ * @ensure : verifie que le déplacement est valide pour un fou
+ */
+int fous(int i_src,int j_src,int i_dest,int j_dest);
+
+/*
+ * @require
+ * @assign
+ * @ensure : verifie que le déplacement est valide pour un cavalier
+ */
+int cavaliers(int i_src,int j_src,int i_dest,int j_dest);
+/*
+ * @require
+ * @assign
+ * @ensure : effectue le déplacement d'une pile de pion d'une case vers une autre
+ */
+void effectuer(pile **tableau,int i_src, int j_src,int i_dest, int j_dest,int nb);
 #endif
diff --git a/src/main.c b/src/main.c
index d1186ec..248cf52 100644
--- a/src/main.c
+++ b/src/main.c
@@ -13,13 +13,12 @@ int main(int argc, char **argv)
   pile **tableau=initialisation(N);
   debut_partie(tableau,N);
   char action;
+  int tour=0;
   char sel[4]="\0\0\0\0";
   while (1){ 
-    affichecouleur(tableau,N);
-    affichepile(sel,tableau,N);
-    printf("\n Entrez une action (c,d,a) >");
+    affichage(tableau,N,sel,tour,"Entrez une action (c,d,a) >");
     scanf("%c",&action);
-    realiser(action,tableau,N,sel);
+    realiser(action,tableau,N,sel,&tour);
   }
   nettoyer(tableau,N);
   return 0;
diff --git a/src/tableau.c b/src/tableau.c
index aea1a69..a7eef0b 100644
--- a/src/tableau.c
+++ b/src/tableau.c
@@ -54,6 +54,7 @@ char *depiler(pile *p)
 void reset(pile *p)
 {
   while (p->sommet)
+    /*termine lorsque p n'a plus de sommet à dépiler (car p est de longueur finie)*/
     depiler(p);
 }
 
@@ -96,6 +97,26 @@ int longueur_pile(pile p)
   int i=0;
   noeud* tmp=p.sommet; 
   while (tmp != NULL){
+    /*termine quand on arrive au bout de la pile qui est de longueur finie*/
+    i++;
+    tmp=tmp->next;
+  }
+  return i;
+}
+
+
+void determiner_indices(char *sel,int N,int *i,int *j)
+{
+  *j=*sel-'A';
+  *i=N-strtol(sel+1,NULL,10);
+}
+
+int nb_de_pion(pile p,char couleur)
+{
+  int i=0;
+  noeud* tmp=p.sommet;
+  while (tmp != NULL && tmp->chaine[1] == couleur){
+    /*termine car la pile est de longueur finie*/
     i++;
     tmp=tmp->next;
   }
diff --git a/src/tableau.h b/src/tableau.h
index 94a849b..1a642d9 100644
--- a/src/tableau.h
+++ b/src/tableau.h
@@ -81,4 +81,18 @@ void debut_partie(pile **tableau,int N);
  */
 int longueur_pile(pile p);
 
+/*
+ * @require 
+ * @assign
+ * @ensure retourne une tuple contenant les indices de la case selectionnée à partir des coordonnées rentrées à la main
+ */
+void determiner_indices(char *sel,int N,int *i,int *j);
+
+/*
+ * @require
+ * @assign
+ * @ensure retourne le nombre de pion d'une couleur donnée placés sur le haut de la pile/case
+ */
+int nb_de_pion(pile p,char couleur);
 #endif 
+
diff --git a/stackchess b/stackchess
index 0558c9da4e095c2bca2164b4e393676d85322182..5eb5f7af7d3eff31cbd80af2700864647edf4edd 100755
GIT binary patch
literal 36280
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
Pg8p_cUuzODWtIO0VOH;d

literal 28960
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
W*81r&mPJH}ztkeNHdquaDEm(d%X^~$

-- 
GitLab