diff --git a/Makefile b/Makefile index c2f7e77e1a5bf69317a7ded79f0752d7b8df41dd..ad42cc26a96f67c2958a79605157b96db436deef 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 Binary files a/obj/main.o and b/obj/main.o differ diff --git a/obj/tableau.o b/obj/tableau.o index b62cc85da7d295b0582d0ad5ee5b138195cc5bb1..5c5044a14e8f3a001d27defb681abd88e8f6ab97 100644 Binary files a/obj/tableau.o and b/obj/tableau.o differ diff --git a/src/action.c b/src/action.c index 286d76a58fc93f68a2f1a8e58f6a87d2714704fe..42ab26c60ddd34a70547baf0d9bd14d478c3ef2a 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 8893657709a0b8c924479564465d17b88f56a3cb..d1186ecec125df029d887e49120d596cdb1f1053 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 5c47002fb775b4524a821058b7fae3593f67349e..699b6888772b61f81c93ff2d29713de75bd78863 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 52be8e28c7ebf911af1630537e5e6e98bf8d3457..8194227155099b5e0d8fb92a71b1e485170d9195 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 Binary files a/stackchess and b/stackchess differ