From ab0c20711c7adc1eb10ea69df9268792406af73e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Dubard?= <loic.dubard@ensiie.fr>
Date: Sun, 18 Nov 2018 12:33:48 +0100
Subject: [PATCH] ajout de debut_partie() qui place tous les pions

---
 Makefile      |   4 ++--
 obj/main.o    | Bin 7448 -> 7096 bytes
 obj/tableau.o | Bin 8616 -> 10224 bytes
 src/action.c  |  17 ++++++++++++-----
 src/main.c    |   6 +-----
 src/tableau.c |  24 ++++++++++++++++++++++--
 src/tableau.h |  17 ++++++++++++-----
 stackchess    | Bin 26848 -> 28960 bytes
 8 files changed, 49 insertions(+), 19 deletions(-)

diff --git a/Makefile b/Makefile
index c2f7e77..ad42cc2 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
GIT binary patch
delta 528
zcmbPXwZnXZ22+LDM6CqQ?$AFT-L4-xuTA_@Gr677o#{No<_nB*%s_gw0jrMyKgUD{
z1_q{y@j}I^ISh;fn|oOO85z${4&)YR<evP6?Jhej^L17Z4w22T*>#zj7#JptbE|?3
zvEwdc<U9}53j(~8FY<^_zQE(b=mugjhJwjNFqr`+%R%Ji3A~m(DXB@NCGiD`MJ1W3
zlP~aEPZr=a@C=8T!@vThg@E|ae+Y<$iUTcXU<G1XD8CR&gVYNHF-(2?<V1dP#=gmp
zeBxd+kkp7GsaXaUhnXn_<!?YzFNUQ4B*W%g{Bazh5VMjn<LuytsN<MiDPhjYKY62s
zJ&^n;Vb96W2$4~nY$<8ZXgax2(w=Do-{eh_c8ms-KT6s&dQUc#vS-Q=om?bk$63t=
zQO!Sjr<6I<4AIG-r0kfw*e4rF+c6eQE|j)s>g57PgV^K~(i)r-xFCuxCQsxMp3Ebo
n!n8qjvXP7((+RH0MKX4r98gC!Ox`JD&UFIhT_D&1a<Lo$t)Pm7

delta 903
zcmdmCKErB)2Gb4kiCPKu9^I}VJh~Y?nh$Vz^qMjNfk)@@7hoDHgI%=wfB+8l%?BiK
z$e^0k%?h+-;(~nsASZ?(KL!^k1{Xhu5GRJo{EY5Q7L1!C7~`0M^yD2ZJ_5oV6M>4E
zCdLaDr{*v)ifk5P^=D+Xm>eiB&L}szhV8D@bynsQ4t-W3jz}N_Na;iP92`-b6WDc`
zCr{u~0U5fDtB4U~s1{EeqvK>l9&yG1Fc||Tlfh)s<c~Z7?5Vj0nK`LNlYM!uSwO)t
zxt-UrJ_5u70wy2^Iseap2uJ|3K>(yu2#8_gc_2X`fT@Qn|6c|X#!%k@6^E$@(I7AZ
zLe*nvSOk%PTL5wt2&{ro80vRG#bFk3K=}u7s6U3HUYUVG2P$w2NrNzu4fFAb$&7sB
zN#9YlF)(mL`HYMZ1}L0Fff%NXA1V%WmL^oaB$9eDB=ts&o2&TZI6yIZOU#T@fDfYn
z!DLBsbH)l_vakn|6UFU0E1(9LPQJ(`Jo$~d3gg<zf)e&jANVH+N!T&2m^@L!p7HSH
zi$I|hVv~g=?KnTPLCjK`94Tqe^h0d&BuP6aQI5%%B<&b~PZpH2XOiHae2`0Q@&hiG
w$vILgAnqh7J0=0~$(Mjs0QY1eX*<pdybx2W!S?1zt8i+FLqs+}Tq4E;0E?5~=Kufz

diff --git a/obj/tableau.o b/obj/tableau.o
index b62cc85da7d295b0582d0ad5ee5b138195cc5bb1..5c5044a14e8f3a001d27defb681abd88e8f6ab97 100644
GIT binary patch
literal 10224
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
T@gAGWpUsj!PmH+=N%#LRnd#z>

delta 2342
zcmZ9OTWDNG7{_PMZj!Uf=CXUv?%8X0lih3*0<lp^OKojpir}_lQc%(dYXV*>HKMJ8
zt=3ksURqGse-#2nqfe{Bhh$&!WQnwW5Uq_=P`p4Ct4*zD@zNlo&Ybx+9%o>8X8zyr
zyUe$TGrM|6dE}KIr<`KzW5`_%F`HR)+jbcIR;>85M$xDQ>xO)oG41AgA7dd&@h#DL
zESmjI_2z=m>diqP!_Q{2X+`Y9k1#$MUVt6wYAX8GzBjUf?SZkTleEv;3z!Lv7-#(W
zKG2{1jpT?W0x_esm&M#Pra6!P#_fE*a-eaRi&`*XMU6|mvMKmJ=g;9<a~_|xyk6Pg
zddSDKxEju&(wV|c&X1keA>M$FU<6-T3En7IJ|7FZ%0sq|39BAA+c6aEFpk=*cp<Vc
z>^30oelsRYVy$S7I`LMq`s*JxF8|NERao0R*1cSrrLT>tsMBnDtXD7@bx@85<F-c~
zF}yzS#hi4#65Q_~tsBK05T6p3V^&(OCd5aMh?-c9=td~s$4zXFJ1)0{?6tYZIe0X#
zBJHB8i&~`fc#DYVi5S<22e3rM^<<gSh+n`HD$6jP^J$IPhyfy&Da*7*3}cdr-DIg~
z#3D*WJWH03HR1#o6INXI?H$VUgO|Y7gyUL!sY-(=w_8XjRWHefwR^2XoWodBMc+gI
zo4o`MlmC+x;4ZIKXt!Z5sk(HA{P%0bVJs)D+hzUoiIU?bjaXAMJEiGwQ^a>Q{Y?y~
zRLz&k^PHE!RLXJl{Y2`wUaRo<mG-Ne{wMAK)^v`glscnH6(wk{J(0)2)9Q>1<hxNL
z)@Z*?(@zq=Q`0YDGOcocM3(zCq7x+|Y>F|f5l>)|h#$#vRwMkV67euuzR`$fbhN8F
zE>f>+C#jwNON<e5o``^W6UtE|KE*Rc)ZPg>jW~e0cJ+&%ru-vb0$;Z~UGAHMPP)fy
z6`39*ulq2WagIEtSx3owTGPi#KS#O@E~SH%<%-4^N&iFR<D@6#%abu&%Y@=P)Ox)K
zUr?@H=*T)pj%n6bvc9J26BK!dbh(x22QrTsXElDB;#|=9S%tITl^$I$OI$2!)QJhz
zoE6$ES7OwDyiruM7Oz8H$9J!G-hi7rKjTG|x-!_1i-m^N#lt>VJ}iXYx$BJM?qw(L
zvY!8zZF~>|c_(n3DlB3wpTVlQ?rzN4y)k+<tTm`W@~W0~m=xE&Q^oog8N;~PfDiKp
zey1Do9{F5|u>qxAhL2((=k&HENmG-1^UF|rxCh+`FH?jSEafx&UQ`RQ9tu#)E9;RB
z(E~h=YL^o@*rf7=5h`T(QK=axT2L$$_=|4A<raDSi-xrEH$;=2K)FSEFf0j=X<2k+
voN|`QBy+YR-Q5={%WGVW9_pQJdNc0s?h9OS|I;wG52fx+CjBES%TD|Y!R;gm

diff --git a/src/action.c b/src/action.c
index 286d76a..42ab26c 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 8893657..d1186ec 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 5c47002..699b688 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 52be8e2..8194227 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
GIT binary patch
delta 5456
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

delta 4080
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
Ks1*WzKK6h1>1J5~

-- 
GitLab