diff --git a/.gitignore b/.gitignore index cba7efc8efd27eebb82aa22d38d6dabc0b6e903b..4d37d303942b9350be7fb5f2c7b101ad1152cc2a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ a.out +obj/* diff --git a/Makefile b/Makefile index d7a105c21a003490517f5cf3ad95135df09ede90..fb67bf3f67b21278209ba0ddae0daa193bc2d4f1 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -CC=gcc -Wall -Wextra -ansi +CC=gcc -Wall -Wextra -ansi -g -std=c99 stackchess : main.o tableau.o affichage.o cd obj && $(CC) $^ -o ../$@ @@ -6,6 +6,10 @@ stackchess : main.o tableau.o affichage.o main.o : src/main.c $(CC) -c $< -o ./obj/$@ + +affichage.o : src/affichage.c src/couleur.h + $(CC) -c $< -o ./obj/$@ + %.o: src/%.c src/%.h $(CC) -c $< -o obj/$@ diff --git a/obj/affichage.o b/obj/affichage.o index e86c05005ee87b10d46e42d89b070b9fa69fc406..03ac6e4ac6746c821f36950b76d322066814e47e 100644 Binary files a/obj/affichage.o and b/obj/affichage.o differ diff --git a/obj/main.o b/obj/main.o index 83f308b5febfbd49ff1ad342670fcc623cd4076c..74d76029f69338a80620f4437b9ae73dffa108d1 100644 Binary files a/obj/main.o and b/obj/main.o differ diff --git a/obj/tableau.o b/obj/tableau.o index 1937f871456d0a771a097810b4fefb0042dba670..b62cc85da7d295b0582d0ad5ee5b138195cc5bb1 100644 Binary files a/obj/tableau.o and b/obj/tableau.o differ diff --git a/src/affichage.c b/src/affichage.c index cb96d5fc7e83858dd6a740e89bf807f893d217e9..7f8a9d380b8738694c3466f01413ac4511982c2c 100644 --- a/src/affichage.c +++ b/src/affichage.c @@ -1,26 +1,65 @@ #include<stdio.h> #include"tableau.h" +#include"affichage.h" +#include"couleur.h" /*affichage.c*/ void affiche(pile** tableau, int N) { - int i,j,h; + clrscr(); + int i,j; + printf(" "); + for(i=0 ; i<N ; i++){ + printf(" %c ",'a'+i); + } + printf("\n"); for (i=0 ; i<N ; i++){ - for (h=0 ; h<N ; h++){ + printf(" "); + for (j=0 ; j<N ; j++){ printf("+--"); - - if (h == N-1)printf("+\n"); } + + printf("+\n%i",N-i); for (j=0 ; j<N ; j++) - if (est_vide(tableau[i][j])) - printf("| "); - else - printf("|%s", sommet(tableau[i][j])); + printf( "|%s", est_vide(tableau[i][j]) ? " " : sommet(tableau[i][j])); printf("|\n"); } + printf(" "); for (i=0 ; i<N ; i++ ){ printf("+--"); if (i == N-1) printf("+"); } printf("\n"); } + +void affichecouleur(pile **tableau, int N) +{ + clrscr(); + 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])); + } + printf("\n"); + } + printf("\n"); +} diff --git a/src/affichage.h b/src/affichage.h index 04c6bee4d46a5139bf4103e01413fd96f09b9b06..d014779935b447b65660fc27ca4dd915370f63f1 100644 --- a/src/affichage.h +++ b/src/affichage.h @@ -2,13 +2,22 @@ #define _AFFICHAGE #include"tableau.h" + /*affichage.h*/ /* - * @require - * @assign + * @require \nothing + * @assign \nothing * @ensure effectue le rafraichissement de l'écran et l'affichage du jeu en terminal */ void affiche(pile **tableau, int N); +/* + * @require \nothing + * @assign \nothing + * @ensure affiche le tableau en couleur + */ +void affichecouleur(pile **tableau, int N); + + #endif diff --git a/src/couleur.h b/src/couleur.h new file mode 100644 index 0000000000000000000000000000000000000000..1323b6daa83646cd84f4c95c4d73a6356ce80983 --- /dev/null +++ b/src/couleur.h @@ -0,0 +1,54 @@ +#ifndef _COULEUR_ +#define _COULEUR_ + +#include <stdio.h> + + + +/** + * @file couleur.h + * + * Ce fichier décrit un ensemble de fonctions concernant l'affichage interactif et amélioré du jeu. + * Il contient 7 directives de préprocesseur. + * + */ + + +/** + * @brief nettoyer l'écran + */ +#define clrscr() printf("\033[H\033[2J") + +/** + * @brief couleur noire du background + */ +#define NOIR "\x1B[48;2;0;0;0m" + +/** + * @brief couleur VERT des pions blancs + */ +#define PBLANCHE "\x1B[0;32m" + +/** + * @brief couleur ROUGE des pions noirs + */ +#define PNOIRE "\x1B[0;31m" + +/** + * @brief couleur blanche du background + */ + +#define BLANC "\x1B[48;2;255;255;255m" + +/** + * @brief revenir à la couleur par defaut + */ +#define RESET "\x1B[0m" + +/** + * @brief cacher le curseur + */ +#define HIDE "\e[" + + +#endif diff --git a/src/main.c b/src/main.c index ba9c7bf44ddd30a94245168444d17dec96add9ff..b6ee7faddda3973f7c2a5d6c421f6b6e1e5df12c 100644 --- a/src/main.c +++ b/src/main.c @@ -11,9 +11,11 @@ int main(int argc, char **argv) } pile **tableau=initialisation(N); - empiler(&(tableau[0][0]), "RN"); - affiche(tableau,N); - + empiler(tableau[0]+1,"RB"); + empiler(tableau[0], "RN"); + empiler(tableau[0]+2,"DB"); + empiler(tableau[0]+3,"DN"); + affichecouleur(tableau,N); nettoyer(tableau,N); return 0; } diff --git a/stackchess b/stackchess index e5a9c2526ef9436324f0ba3dde332545833abdbc..20256850c324160244ebdf068f264d88be8c80b5 100755 Binary files a/stackchess and b/stackchess differ