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