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 zcma)8eQZ-z6u<XvZ+ow0>vy|$h0U$|!06ZrP?51OSm*{Q6G(;#<6~tjDI1p7j6@h= zN^BO)ngb>zi!%R^C?P@y3Ys7v3Q9CGO%yQ!qKFen7{))0qIhoKd9XcW;z`>3?)m-B z@BHrVyYF@E>9N*<a;dWH$fHA<y~{(%pF+uPqvsp%F^o`u<7g<^ICjh0*LaWPY%J7Y zr-)3bZ`&A4{L<feZ`D~*v^3OryIfQz6W2q@<(ERq#TP}j<vnIOd208Pk8pA^Y3*Ni zJ+0Yyihp3j1}D>9lIKUoIQ8u6<fY^pBwR{b2SR-xm#@^s)4F4?G+zIIw&D(yK&LE( zZP36Ijo0Jf2&Zr%vp^cif?GI5<l#wjT}E$AUN3r6ET)kU9?xLRwwdvmYZhKfsaCsy zc+8)|K}s!iL>P}}i&`lab;LIzHDRhuQ`azOnj6g$gNWy}f$_ndOqAUcjxruC=*Mg? zD%+mIS(zra%!azr3PF=nA=^fr%+w}zEK3m_tI*<Y6Ku~EISfA7CiKxuTOQdKKG#n4 zxo(`#6{4!?fzf&?t%E`bP)J*HlTTce&nDfc1FbF8b<x@(<YXzLskZpJFr+xD6<JrA z>mH{vw}@6N+|}wTLb6uXkWS`=F~#ecfdXPZv+SaQl<H(I@T-&UdniBErR7`Quu!e! zPIyuE_Ff^d&`F>z9E~$xI9cqtlv?5ui{wSL4V|>5zH9;OVWSH^n2Wn3EchJSmg;=h zgr6X-i8Xw%rjiO=4+`>x7*`ar1$rE$3qELr`KD5nX3A_nkO^_qRk&=nxNS1aP@Xi; zG0!$PIV2RZV<Hz`Fh4fW#_id4d9O8ixq~rR1+VpH<Z8?^Z<AvJ>NayRXUsDLs~^h2 z&*mT=1E_Mi`TgPGq&PQK%I4#;8khOX;bS>I-cc)O_sOP&toF%Sm9nx>R^OLRTV+0X zx}2pXWYg=iTrFpJ$o6Vk*(ql$g|fUs<{dA~*`FE9{7lN^aXFw3Zf!8FLM=&xk=(1E zb#3k8w#||5F4ol@PPDW2-HB*85rd<alALIFS4RRTh)2V4$#Tcu9*&1&n<8D|SX-p4 zJ+eN$W%!)6nbVC77W-e^4>^v4b$;CDLayy~`k2(`T6anFa<Vp0%2ou1pE|<R$5h7~ z`!b|wG>*_{Cr<hap>w1V65vRY5B3*l4li<4OI1C{wKLB8>8I9@<}S*gqP+e{*at_P z9{YYm{dnh!Sj=FjYkP3Qy4k<i%(ld1@$M+=dboL_dicKUgp`v>TB2b-9LihImxImQ z##`ZeugANC*3&EsFvQbXeD1*zqQ?kr6%dAw?u8NWv?>dsF%5ix?xd&3c0;}gs(c== zh0uKlv>Vp?rtv$F!tc-Fw9mu8h41isBdGZc_^;5C@8NGiB!2;1%U9rdzEzd+DI+2V z_4ytc%`fMrVDo#tKT?Nx$e-@|3#j*dB$dOn{tEBoMEb!%ngK&7F^AB<4QK<5AlgKz zk4C-0IpC8$-WyaCG@!GgYO<&4455n*Xc^5{81gx^$PI@45=ddM22wj{K;MGXh)$*2 zPYmdExQkBSrR)_0T0~Vh4f)@+-DbZV@_$0h6p!x)p(<7Dd*aA|ol`3K5FDA}kyr*? zm{QUED!E>5;C@dU5y}giXr>>B-3I<`;-4_&o#gP8L5B`qFLToA(@o})p#sY5jrG&J z#=sXZe-Rx9els=RZsb$`Xgc5f@E{!{;6sDZn`G##{}58?Q0oiWM><x@>kHUQIy1-f zu|Mk}pw3X>rF^>~Ka=u%#|xp3kG6Qw!2eoo55|`U{t`4Q`m?JBK))w$8idXWGKPho z>H3N<(~5nR7yd*_f1lPG`18qVbC#gN-C~FBB?Bcje7DfT8v?Xcp(Z~1O)%e(*B{}X zhP+=M{^Joh=MiWL6hLKhp4#I@8H|h2QXG`tPQPpMRZ*^AUehj3fg0C&TK*pLmac=U zfCDxM^3;%c1!0UrDiD-bPJ#=88tFz3m`ZA-$`WWUsZrgz8YKg4r5>mbC~&wWPg+v~ z7ZCK)-<hQd2BoMInoDb>q*J{6VSj14I*|U;#@G%RDGi!>N;D~jgS~8)YISSV<IqwT 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 zcmeHw4S1B*o$q;PawapGB$IExWEnv$C`kYXgCvpwgTtqYpdi&@m`swX$xJ#Q2rg7= zz&eJw;M%=Dd#TcPw`;53b=#+2MGFC3!QED|ySCh}y-(_@J1KOf>qpayW`F<l@n+^t zQt4i=eeQGf@-YAN|2+TmKOgV^ymRKw-M&@JY=*(~WoOqh!cLb+N~2<U+f)Idk<~Fb zJ}+a_m;-p8ph<qC1mMc6&6W$Dif#uay~h;a3NKM|8fp&-lHO>SKVNb*WU3vc$BCtI zE8OLgdKzlJS)W((nFXE_Mj6vETaRLssg`<~hFo}`YWIExwH~3QH=y(el%9rt<Pa_m zbv!91^#28A&kC245-tr%maesLC7Y?-I8~s-;1iO}G}L-GLXZ5s*h`0fovLrNxQti+ zYp9ybYTF}Q=U-jh-dx=tiKez!Z?BtQJ^$*OM6716XgAp>+3VMA5H8X9Ql<pI0yxo# ze_`%>KaYO>e|>-8_CKHcm4$1X`jY>)g=CBIpKQo>eHkT5Blv3g<qm?QT@f(KMqpk! z3Vjdg-Vx;8qsU)A3jL~4=(mhQKLolL|E<@xAdKXH(<t<DqtMC5NOt}fbT9r}FFy!s z=;gA|-y!PW`7Du)hdOt#@b*ZO1p<*oEVN)jAQ1{iTUci*nV^qQTQJT#<B@2xg~XGw zcGeMWZ;yqb5ZWFLv_zu8_Q+jfpkz0YNCxA{Ku0hVWi9b=m|eeW`Qjykxi#0ArMWfp zSYY}3)q&=4Jlq;dB*XFbtCzILqT%(yt?gu}wIdc)h5}M_L_xI5CPpHC4wdYRW&j$H z(eq<mBvM2pHL7T-i4hlB*sh|Z*AYGMpDLA%^J<;Y^iD-@Ym|IV*Z7%5l1^it=7qlc zvgm3l6|77aUE3nY`7AmdH?M&#I?XG6jc=4CvQ6#Qm$y-th_2@?QD!vKCu2m{YY*YG z8|hQh)e<c5x<&zneD?a(m_<iG&C8!fFEFWC7qjRzC-t?lQI^P`LQNclV-XmOz*q#v zA}|(#u?UPs;Qyfr_`A+I{oVZMwT$`q_9ktEr~O?oI8T@@7@YS8ScB8w#HVLUBT9s~ z5x>805ZCmd5l*RG|7n5$m~cwr`g;Zb4}?>S+5eQlj}uO*T>l|~A10hqxc>bD|1RN_ zy7liC_;(1WbgREp;NKveQqcY_0-p=KWj}Cn&H2^x^sBe~({K2@-aNl{{i+^*KhjTs zPf@u54aXogSowAhWAAyUEG14u1P1&)d@F$k1IbE+;|TZ^4%c9xXUc9ed_qCUFA(zc zs9yifkNw9!w)@lP{l_wk{Kkv^S3gcxz`$3P0q0;}i>OEI?{4@lSS(e$!Qa)ejf(#C zTggIycf-$sWUA4mOdCF4<gWrZZqs@i_WvoE8=!-Zo1NbEx<8#debRS<;?=e5btCEZ zcl*$Vz35bSm=f9}_>VeHW*+=_a4_w=(CxbbBrS-(^W7URK;eA)CnRwMz1Gb=#f+tW zXLC3QVP6ndpZE9p&id0YlY9y6BOX6M-v12Ml9_@kz<<Y|ei8H&CjA=FJx}}I@f_*( z_pFwtQ|DpfBUm{5Rcg*nXwM9^r`z|s|6%{JKE(87=ADmVFYW6)={raE&qhsd_l9%+ z(2xB+g|89A-@T#F-*ZVR={zTN>?eI0p;FuJI|qY36@M=UeSLo8G-A`eAwvd^y<sQ( zBr#c+FJpB3G7EjL?|iAtcMj!qRK6b(>cgy<vH7+WBJ$~710W4xfOsD2^*r5cA$K!H z=sM^1r*~!0MSVwUf0vme+atBf=X41SW&GU)2K?!@=ruw&pj@*5C0U!cA~<!KyU_o8 zds7Wk5=}?vLRWC9cwQH~l{Hbvc?wPA1%wk7o#mptO#3D9a^Nh+Ao*}Ib1!NTWtc`y z8H*$7)SDP^6tA<slfD5_n2k}D6XlGK@<3LUVf%jA?(z*Fv;zx$Z|*$R<-36L1uB0} zTb(wFG4gHKhoo=nye1k8dKmQKehO}PNw@FK^s!_8Q;buu4yeJ^m2r}XJ@YQd=8g=n zq@gSOVgzv^`Y{c6h<YIk8D*(wtqeYms^44Fai#tX41$YS7d79nRKEpP6{Y?qSaOBK za<0?t92(C(^KMlt2}^Bqc#yMVLT9U7p;Q{BO8WS*UrsSjzdF#BF&6kPc=r4VT}`pk zbU~z%g#PO4GcZ&($_Ng#{7=|%Q{>*p035mL!&JVhRK5q5vp0`o_sdG?fs40$qf*%n zm7#&;+4pzo)DZ?yPs21Q$knasw}XR6y=ZSHA0<6nCsXTtgJQ)S#BE8+RzhOP{LX(l zirBKuD+8up|5*^EwPyuYPNYh#n@3D5B%d`~{uQyi63aI&u3s~SzLTZCYm})&E6Pw; zch_aE#(Y7C)m*InB*>r5$6fLY)GL?wX{HA=a@_RnyOS1>o(2a5G8cZ69SF}p7kIMS z$HCD-yaM7UagUe5I|B}yD#u-_;OLbUyFbq{wDV;d(Osa9*lq2mwfi9g^ItRxJ3!DC z%ie1eA>C+7+>%?D>b=q-z5a*jRw;YqxP)B;t}nR|pek4qkt#t!+*f6z>_S`ga(_K( zZ@{g1z&M^heQaRLvCI_Xc-I@oOrTu@hG(w_v-@KErVV2axk?opc?kDuS=~b)3=a06 zzGy4rKGM}|c%EkUYf>vNw(2}o4HewiMFi)W)mKvWH(qr0b(zB$Ls^#cO-ujyJ}l+` z0hTtwk_yMqkygrZ>?JG5Fpe&+Wx3(F{^FGCGVi00vl_A8tloj@&-yOb%>T$Wv&l4b z^u6r$z_afetkiNIqy$Ib7d`v7n4Hbv49yU6t4BgYw}AnqiK@ddBUE^f8v{}Z(VKR& z-s@rG?9`EDevL$4MtIs#J(SDUA*VP)$!U7S521Jl#`p9lmr;?b%}q^z^Dd@n8WZV< zxT!8Ue)p7-#ZHsh-rl=ur0+8;{tl@9^!1cb5}qG0nLS{3-zGd5UhQr$XP!u(N#kZN zUBp1{$}}P4#GKB_XHM&UrZ0OP#Y*VQoSg+_ByC8A=S@b%bfbH~%qAM0BqKZN^nbwr zu3Z_H`q6&mlXW_uq)Z-}SE?_Kq%^(y%zeId-TaF%mG*t;IpRClH4sXU>l$eG?70Wc z>>3Dq_8dZ?|6P1g9*gu;Ch+h74y`4^>OL6^k)}t;nVyCRu?Le~wVnLv@qH+}`6-jW zA9SSY7xwge_IwAn{XH8#ly=1S;8L*r9|ZkqGd?mlpfCCc*LaSsM&`8POm|9nLd{Qt ze>R3XZ-?#7Z+|VS`<<+=)2xo{p}ODI??^4qX~qMXEl^%zN}hy;qp-;`9|>CxD^1oD zAe_zHf7aMPG|0V_&!$uF`4P|bsrxXVMbJxObGoURfFe|yZfUxCdHSbK8=A0Joc@zP zVQhoHr<&kRP3e!8r$1OVleSt;|FMtknODxkvAw@adguI$XUZOOh^<QhZdLk&rRjH? z1}k3ocbzc&3x1yZCGDX%-`4c`rrVlsZwj1fX{pij@18(h$zIMbTbTNze9-q#1zuk? z84us(O+~}rU?>@hMZGgZvzliGXL_$=(?im+rEA!_HEii(wr(+7yN0b@%$BWT%NDcs zYuNh5Y|>``q|I|zFz@t`mt9$1&8{q%9${WD+c`bKcEX645sv?pHeX%0aPGp{^smF~ zowRv&2WWE^UNxs9hXs`(-rUi6!q(h*^A@WABU{WC&~|03M9rr4k>r$b(-YLRY>%=i zj5Vb~6unR|5%xwu7fvL-i4)&$4~t+%PkcLE!=@*$EkHxF8c!Y+sL;2E6W&lP7H^J4 zNj%|g4tv{!(%y+f-b7g23dgBWu1ZMv(RVk;QtjxwZLw6s`^8iwiEk>s?P2d1!YS{J z9Xq2l7a{U<5>hbX#kZmm&Xr>~b)NWkC=zT}HVJIL^fvDZZ8F_}k6y?yW0HL#Exz>q zdf%@G2L}Lm|NG#e7kBLafTw_`-WeRM1HKf~XCvS{fI9&ln1TlZ#{oVMcpKpBfIk4d z0QffGB}kPXz(PSO(<`{eYyrF%$;EEK$B=y-0xZF@*9*7^NooeL2f4iy6TKI32H<Sm z3~AY+i~OX^xN99VwwD-_3iF-&jr<a#(^->Vw1M(XeT^*7aP~#Y_nm_eBwSpwta$ti zkNZyNZnkLR!Yi)2Y$}mSe<}WNgk9vr=0$aV9{=YdMz0XHskr1`+ma&WJ>v4>b0_}4 z3I5|m(R^Q*-S%}j4HDTng#ULSzVv;(DYI^f-wX0q@Wt1`+QzCOejoTZfxisU)VDPW z0kThD((V9%3zfCLZL`Uzets7Gnc4j2A^VNs9|!-jY`*QALcj~!7VuYKJT#%-O#AkF zo3tR?xCb(=7z6(ka7gC62FZ|*e+Bx-xR+0*KGr_kC)+ju1=2%K)dpblZ6Q$w_2Zl1 z`@yfxwvRa5r;92`OVm>cA8$Z*xh7lAzTEU<7Wlg`Ch1IuSx;29gvP)s@b`lsCjR2$ zl0UO8E*}4Y-B;}G$y;1JV;}by&%W2;FRts#UtQc7FRp7Up50VDV{x$;a*$tK>=fq& zX!G$5>;Q~iV-XmOz*q#vA}|(#u?UPsVAKfcbAtL@Af+&LX;>&x^B|%=%a@!Y850y= zpFf<WaGldmRJcBeC~`;8H2?jN2V*2cc{yEpwj{2H^CZ-H?`*}V=jC+0BmvHw%WJ%X zl?rO0)EH}&6rCHLQ35)T$3t0hiF_HQPF1m{KcyVge)mdohHnAHrR&F5L$n7(A&O@# z0^hCl@t9lSI=)D81-@1Bk-iDs^jq2gtbsmPZmoB|I*__d!J8FqQE;1r_bT`o3Vut$ zrxnz8+Ztu*`Xx)Q_0Cut-Wmx;y>&HnYi3t3m?;Zv7DQyf$>@Jyond`N8?its{~<ys z<@czA$K7g7S;Uq79(1LY_ozXj$H2()Tkw6jl)rnjlo0v9RT#MRrx{*I`5)ma5?x|H zAd5Mlzk%n{Rj2W%;1u44))!;MjMQ*jJtS;r#w`G_JM&+InB8#BAz;gYh(KQc&jitN zl_2uDkj%^DI1~*9{sO5F5@+9pFHre?D)&sHGIu(h2LSDc<62PjXW-*Z-uuq^@W**0 z7<nJ$hX9!KE8ygP=<24jGfJEb0x5A`3)#Gn1Tx+kBe9PK;&m<|u|a{%aQz!`m?5y) zu8qVpBvvP;Se{K{jjmhBV4lSMt}4Q~#MZi|lb%Cj8(m?-oJLg_WVX2SNwUDGNCURH z!h{tX!u?Jc?a=Z{B$jlQlU|uo^hLn!uAdQBWt3eHxZC9?$#I5<eob(XD@<OGH=KV4 zYM1MuN%9iI^C+<UTr`OCrW>AJfcstFCCO^Tl?L{(>si8TBzDNvOIWSM9&?=}Y_`On za=lF0T%({Gde6A7rrNKPe)hV)M7(*1^RGdDffZ0sEkn^Qh5{=*NWy<voPR6C#^)V! zQW%_1kj~ddNSL#OB)%ac;&kQ_=UXBmCCuSm1D?bAFl-9L)Fxq=s8oxfeqU3|S<wd& zEnZ1R78#R?QM?Zyd5sEr8|=I$iFhsthks=Pb%kdymG6_~XCTDWqKu(Qk9KWIupI^C z#$!(8Cr~bNxSfqaoOEY$6p8`EoKK=&M^S-bz`;TY*t{fAQnijW>2Bq8lsY>|b14az z31Qg#8(>C04?)5@zl?(!$d@h>62&B8JFu$MCD2L4vK?qFTZ2(6qGmhLUS13jjiQ2o z7rZUy^wqfG5p&3PAW(*<b<8Lc)5msTGyJ6a;&8qPX#^FY>;c>c^4KKQpr-!cz#vV1 z>l#L11ddJpPn`NRVuq&v4q%`5)V~`xho(L)1fS*9|0?Rk)VEG`YPO#0R5qtNMPS%e zzYat>)!np)P#X$q4IwHm^@2)^jG$VlIx)<tE)YG{3DHxXD%Mk7l+{$HvSq4MDrio1 z%KJu~>Vg3WFTjA!OTLy=EhbGp)o&wBHPvPISVF6k;di{Ol0NZl5t_!qzlLn7n7jUo zRJI-1Nb}nNxe(a41MADbz>F1olB3ecA%oc9v*Zlftan_lY(54Bx{QMk+`^^J`l>9O z^;5OY2s5tJHmQQ^T$0nqN`6d6=Q}>4I}xs#62RzO7%l4ruZ&!<9cW_}$4Pc(J}o6* zQ}SC(`3IH!%t|T0vGQ3Zqkb2}%ERqRX3TPvKJ1kzJ7B)1kRoO~07E6eB>P^+ElO{h zY5R3$+gqV*mkCqe$<ox?s(&EOsRhzh8yiQRVN4XBE>qS@O>2c%`KV<R%PFkXvT?s4 z{YtSi*D86Po*M`2m3*ZsKmI>R-sz-Z>*exs(?0d5b5aO6*6?z~zCgwP^A!6675j}< zVidUDvd7lq%LTMDk9`ZK)rwpV^Ryycv&1LK?XhI+lajHq6}f6`MJ^MI0v4ANOd4aQ zW375DAiinA6g3Y1D;T9BUs^d{t|$I7F*R3CBNh^`QcUQTwIN8`4?KT&`9CTXPpBDR zfhm5Yn$_zoFvV}2MzXd8Yb(SOw@xi_*lIYO{V=K4^Gi`QmN+u%K}MT0XB?bG%iRpY zRUWmKT_VtF(!njP#2|c{<Hhk(OMLN!qH*xcq%8cOc8T<VBl$mVW=Qz7p1i$W-wepx z%gviXWdj+_cj)y-eA^|AN`v{8SqAg<-GvP56|S8O>J^R}B$l){U{)<@>rtd7&AO3& z9}hvsmb6byGRO9pWBW_Ys!{frD{1<=9oD&J9HhrQrDBKZuAsczcHr|eUvy6;7FH_C zS===t!P{8s6Ncui)v#PFjzwxSd51_pD=Bq0CKgI-vGNczrYHoDa~#f(z*Za0qbTOF zawJh|4G4ljYk>9PR5_kmjjaKnxCV@+HDhTFo+;5@2Wd?Lz~Bz+Trv(m4ThZLd;*oR z&!I`qFAs@H-Yh3Mua%R0W2u<Xe4(7sTQGT_hmy=xm{Dp>FD`f6izgMA8fEz<*c;iZ zn7#N~_d@pq_j2r*?3XdO`#MNquB#$uGxvZBD+EX?zud4FyWLXF0Kr+5Wu*?HE=AyE zmIwugvAmo_-IucE<+Y#`4%N(9Q8^6M<Ex?KtEDBOxM%{AJc=Y-l%$dxW6=cd_va=o zFQ?`-j{l3r6R3((p5=`VnN=AqICUe5P@Zj)2!GVjWCy~n<5Z~Q^nVtbPY4VmH7qbW zgo@uA=}I?-R2jbUs<H-j+{k+WP4>|Ek-6x<|DU=dC(vcqL0hh4TVWl&mATO~yZDbB zJ3Vs$Z_IGBjU&(RPaei@V*^&ZO6xEkoA=Ah#ro$)B4=aYqakE`SX_ip@hUe^jYK@e zYEy|gy*R73H597F8?yrQuU4<mYK^99>uMv>P<yI5Eaen3TyARwFIf_%v^-v}6p12V zMLmgRb91<*rj5S1P44InCs4$#3zbG<vIq%L#AY-}uTBc4K!+yd26Nf;S1}WK{#)FU z;$^Ko{~qpeuHa?Yar;lX(^<hev*j5N(ucELd~V7rr$qTnHoQj3_)9opV^4qP;n3~+ zR3f4uX-?!-Kj1FsN^Vc`@wL2gKOgVh$V=|w?gq}2ycq4a*YZ*V&K7<N!Bc!3frO0M z3SJ4!wwvQ!Q+dV;Uhoxeth|%EyLkBuZXB3Hr81Nn=JKldc==Cx#gn`=$&0$U@#G@z zdX75|^TJi!mE?u!mnZqeB=@Y~JjDy2;{|Qp*ffWPcrAB7OG3u2P<orZb=Q)ERpd%7 zpFjW(<`aBGI{0{wgJ0GTy7rQ`Xb~(3y?W6G`{PPv4>z7)#LM31<C47cCw#&RZpT1z zUaD|~Oh9$xe!?f2Ttxue1zFTlv5Aj+g7Zgs1#se`=s~gcFn8AT$*9`c&npNV=AHw* zpoNcL$tNYb>k)LqrF=3pMDe=eL=kiQoldWAm0>SBY_nr@E~PwB`~>H-ovgu@mIz*u z)*AkFW~_cbHG$jT!sK*5N&ywURVzYfcj^w^%UzPWiMt=AAtA;<tsDb`Y7E@V-Oesz zUS7**BCb`ZXaQJ8v0uTL69BP}AQ%9)NAQv7ND3=?4(CE)$F_o4&&v^Szw@vPzTJIT z`%sGxF6Xc%mXM87@}QEtmm7~RQtg4%MKq}B9?o0HE5}Bvc|SRYkx#(!mT(DZ(I%R& z1<o=)`2hE#?xIt?5EFPM#@r@;2?$e8@yqLZO+8J#Ygh6HkY=6YS3;(qFLWN_*MU%d ziq8^+$sqi}R_dMG_##-TImN4m6<Q)}_BhrOv95~1*-H+q&_y57p{qD7g5rLcJD%V( zR#F!k&ad+;s$~iB%6B$!bi}1Fh`u7b#yxx%0W9BQ_H5+!RNF?JMFF^n*Al?g;G3Mc z@<L~dkE`d1WFbhd6?}R<pN18pl~07fg{QbX#q(<szD+#;Iqv@N+_=l;#5|fPZhGJU z%vX8&%cxIh66vQzcDI3BT#DNdAewJG%blAr{E9&+z*^M>+HAz>QJ%lj**g1qUZfZ+ zAz04yzkv>^;Q98B8oQ^S8<&Yy=6@qDHg@<kk4|&AvppCJcZ8$KPbWlrQ#}sZK#FcV zxciG12A1Ct*qUkygrm(2>slm=w=u@rn**_ymP8n@i0q8e`xzmW2yP1tsYF{Wp7hc| zs03aD8GsD9cg7>haG*08XMvXXU~57U$?jJChKu3lknuahaY>DbgU!Ma-X7{*vS5Kc zujZ}pNa8nN4Xxp5I35WB4aP%l4f4&T-s)CwbugNUc&m{BHQ<$%lq!YeafWwDwtB?} zIV1-a3*cRqcd$Sx6%T}B?WvBa@Mdmc4&E?HTJ(m=8v@Igukr;t+f(qWGnQb%c<VM+ z+ZO8x*WMYqqdi=E{qps-c(rBdj%YX`Jtqy8f*Y;TaI;suCKFmAmWXw9P^@57RT7EH zI%K<9K*S8;5Hd1WGBBxVDiLm;E9fFH6hawcvm$Dlc)MmG8s1KC?d%LT&yfI%gk2@U z)e_8;QOVIC>Lcpt0Cn&DtEum(L{Rj-&MAdETha7Xr|dvVI}t_EwWzZrhCG){3YTR| zwu!vW95-N!5hIx`7)8+-;vixWjfGRq3^{eJN_}BImVy&Q0R$=|NL>m4NO&kQYz}V) zzZ0(=jf5HI3arOjG?v<ie3-?<G;pKgWHPn`Wc+$Cuq^_A!yQsC5{)GB^SnqRNWaZw z@`fG`(GUMpagB;$zoh9V-w*+^<VAJ@pmZ7iP%(ju$ttQ8V&cb&n7oAKPUkF)HDPI? z%SSmpuIm+~BVqrw3(1lB9_VZf^o~^h9^+iPoxO=v-+I~cq?;b3SuZ<I8_NfFxg0xl zFn#_wn`6h@L-je`T)LC#^S!xr7t`m4bLj=<`QltU9;8{$#}eO;H;Q^kq!+Q?5$VO| zd%AP&dze1AolA!iZ#G4i?X1*%?{hZSjyL(9pPEh4^5smQ1JCB#@oPtY{yUdm$woS7 zY-d$WzlSzg9-IEgY>F(~*?6{PMEV5QIU-%3O3$@rXZrNIm9D;9&LyK?)WP3jbalXY z7+oEjA4d0DDA=cilE;2MXl2l;M;pD7TA!Rz0-y-`YzzHTMc3#1l{mWw1%nO6M^92Z z-eZi=UmeQMQx^L>g#7S+e;D+U{C{*5`nN}+Q#v=2og<^rM~mAJA#Y&ZzAzmH%QcdH zI`xYu%frU)Sx^l&eB8dL<gMdBUj%meJfdXPV8h4rY|zWlznyBR=;f?Y&_yLVAL~Y; zw<<f<vu;Vyy*U;nQi+PZBg~`y!p?AozZ!-9H0UL;W1V+D5c0*$dW`Jv72SFQgwC6n zvEl30tAak<pSP49>(Pt%Mv*T^d&y7hy5SXZ7;e87^s?b(wgmK2Jaf~(W6&aNiH;hW zS5oklOI!hAr`S9_rcZOUD!P8k^SF}VrszzKhp?jGE9eTz0(ADW1oL`(V-^ubdIUz} z%6g>mkfK`;<V{d?{r4WOROaYBGTE^nHT+ve*V*}1O8z-T*BhHP=nuN+{!M;b$H{3W zub=<v-*~*H=+<*NbViW;u^telQ;Q?@S03^JlDD4MEE06-TlVJ^(5Zi|eqIT>H(OAZ zeV|VrfxcV#Gs68n6i+6SDZB|Jg!E6pDL#<w2!!aR^2pW$&9Ojhdu(g4J<yzt#S?*G zYC8+XIy&3K$#8ScHCNRw7+HwkZXXE*<MH4QY*Lc(9eAgGup=C3PIYwbfJzn?piDAH zRHd^+iE2)=s58Q>{15&I0?XDlt@Z_cYnBF(^5z;vs=jp7nx@sum*jH9EB8Ud7AoNL zD+~Um>sa9WRW~edS{1lq*|M8_>jUeX7GskGLGhygP$DIoCtlOv*r?yrPjBZ}ul>&@ z=A_xb@BRJqj|$`}(_a(Fr3Avw!DP_P!&UMuGHv<S26Dv}Unl0n{@6gSG<qDy<)08h zdvpGtfczr{!{igOKwB`{toOIH#R<@EOsD+JvQx;4B5~9oMaVTPHy>(4sCOn=9X_;4 z2n4n!63Sn(yEEf~jfS~t$^8=zLv>w~wZXxkau{NWKeZ58zj}!tQ1oXP^b7$x`;RVU z|1pPL3#=xwqXWYj5Ptwdz&2gNb~GICWHr%PGF;QNczJa)*s3sm5mK`?6~W&Xi8Qks z!rFp~HdfQTBMN&GVt*?*+weSq_FvgZ0K9m(JxB_w)QN-EH6q+KDAu&bfF@}hTtgET zLNPI@YQk-5YPL1Qh{mL<oTE}hmr+BoBN9UOu_RfBb2K<>&?&423k5xT0Sz0?R;UD{ ztyonQ8i}^VbUC<nYdpM7WB6+-VO>VJbWy2~u)zI+B+9huR)A$uT#u=OhSrQ*-8Pgo zW7ANg-)3rky&u%jYf8$3zW-|S92Bzk^}bQV%e0_^R{f=*<8?DJUBBL6YN+*bz)D;= zcad|g0fxJQ>A&8GYAD{E3_ea^ia2R~I^96m&G?U7jj6Bqs~WyULRptJez${1zeUyl z>wT?;dIzKZ*K!)(0e$*ytH$;ISHsz=Zma*=rMpm|m}-5!Pu8$k3F`W-?cbyH7b`ja zTTKnmWa%TzR=>Q&58)L30YHig`6n*Dk5-U$vM=&A`=a0RW$SyDo`#3Ag;BPcXAfEQ zdzFBOy1m+r#x?w!MPKJ>8h(Q|gjtuaUz5IxLbm_<xqyZ)EvTTi{j^^recgY|s{|En zG#Qev{Z>-!?@-9rZ=5PQ8tP-*THad!QH#EQ9-$%qEGPT2)=%?;LPT?jF1>Hle}Bp< zuW=1ugN_IPwZ4A7ah`stiA&2#YzWu%Uw}blPwVUFAo}ln^-*we>G7%cbU)Jmnnbj| zeqM5>mb4g~A%Xd+^)>t@INAEFQHjo$aEn4U(0Ura3r4p7mPRSLMd@olt@;}OEed2y z`>*rsPNlEw(ef%B8f71&L^LIC(zX6*_YZA{_T{>4Dx<JZ89bj&MA<4^HH!XDy0PH; zT$P0S)2csp6#Z|~&x~<R(j70+VfE8<0;^3DJ+fLVyl)AhRkmK~TjTdVy0PH8TX&2^ z&APN5db+F2N<@IUw@S=v*D6c6Wr_;LHl?p$tS}YS`S`D!qt|a*pDZp){g42Rjx%Rp W*81r&mPJH}ztkeNHdquaDEm(d%X^~$ -- GitLab