From 4745477671123180de41005d8763e1da04d37b5a Mon Sep 17 00:00:00 2001 From: alberr_b0yyy Date: Fri, 6 Jun 2025 16:28:18 +0200 Subject: [PATCH] modification de tout l'affichage et de son fonctionnement --- main.c | 253 ++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 169 insertions(+), 84 deletions(-) diff --git a/main.c b/main.c index b04d5ba..90cc78c 100644 --- a/main.c +++ b/main.c @@ -1,84 +1,196 @@ #include - -#define W_PAWN "\x1b[39m\u2659" -#define W_ROOK "\x1b[39m\u2656" -#define W_KNIGHT "\x1b[39m\u2658" -#define W_BISHOP "\x1b[39m\u2657" -#define W_QUEEN "\x1b[39m\u2655" -#define W_KING "\x1b[39m\u2654" -#define B_PAWN "\x1b[39m\u265f" -#define B_ROOK "\x1b[39m\u265c" -#define B_KNIGHT "\x1b[39m\u265e" -#define B_BISHOP "\x1b[39m\u265d" -#define B_QUEEN "\x1b[39m\u265b" -#define B_KING "\x1b[39m\u265a" +typedef enum { + EMPTY = 0, + BLACK_PAWN, + BLACK_ROOK, + BLACK_KNIGHT, + BLACK_BISHOP, + BLACK_QUEEN, + BLACK_KING, + WHITE_PAWN, + WHITE_ROOK, + WHITE_KNIGHT, + WHITE_BISHOP, + WHITE_QUEEN, + WHITE_KING +} Pieces; +#define FG_WHITE_BG_WHITE "\x1b[38;5;255;48;5;255m" +#define FG_136_BG_136 "\x1b[38;5;136;48;5;136m" +#define FG_DEFAULT_BG_WHITE "\x1b[30;48;5;255m" +#define FG_DEFAULT_BG_136 "\x1b[30;48;5;136m" + +char* piece_to_str(Pieces piece) { + switch (piece) { + case EMPTY: return "\u2588\u2588"; + case BLACK_PAWN: return "\u265f\u2588"; + case BLACK_ROOK: return "\u265c\u2588"; + case BLACK_KNIGHT: return "\u265e\u2588"; + case BLACK_BISHOP: return "\u265d\u2588"; + case BLACK_QUEEN: return "\u265b\u2588"; + case BLACK_KING: return "\u265a\u2588"; + case WHITE_PAWN: return "\u2659\u2588"; + case WHITE_ROOK: return "\u2656\u2588"; + case WHITE_KNIGHT: return "\u2658\u2588"; + case WHITE_BISHOP: return "\u2657\u2588"; + case WHITE_QUEEN: return "\u2655\u2588"; + case WHITE_KING: return "\u2654\u2588"; + + } +} - -int print_tab() { - - for (int y = 0; y < 8; y++) { - for (int i = 0; i < 8; i++) { +int print_tab(Pieces board[8][8]) { + for (int y = 0; y < 8; ++y) { + for (int x = 0; x < 8; ++x) { if (y % 2 == 0) { - if (i % 2 == 0) { - printf("\x1b[39m\u2588\u2588\u2588"); + if (x % 2 == 0) { + printf(FG_DEFAULT_BG_WHITE"\x1b[%d;%dH%s"FG_WHITE_BG_WHITE"\u2588",y + 1 , x * 2 + 1, piece_to_str(board[y][x])); } - if (i % 2 == 1) { - printf("\x1b[30m\u2588\u2588\u2588"); + if (x % 2 == 1) { + printf(FG_DEFAULT_BG_136"\x1b[%d;%dH%s"FG_136_BG_136"\u2588",y + 1 , x * 2 + 1, piece_to_str(board[y][x])); } } if (y % 2 == 1) { - if (i % 2 == 1) { - printf("\x1b[39m\u2588\u2588\u2588"); + if (x % 2 == 1) { + printf(FG_DEFAULT_BG_WHITE"\x1b[%d;%dH%s"FG_WHITE_BG_WHITE"\u2588",y + 1 , x * 2 + 1, piece_to_str(board[y][x])); } - if (i % 2 == 0) { - printf("\x1b[30m\u2588\u2588\u2588"); + if (x % 2 == 0) { + printf(FG_DEFAULT_BG_136"\x1b[%d;%dH%s"FG_136_BG_136"\u2588",y + 1 , x * 2 + 1, piece_to_str(board[y][x])); + } + } + } + } + return 0; +} + + + +int main() { + Pieces board[8][8] = { + {BLACK_ROOK, BLACK_KNIGHT, BLACK_BISHOP, BLACK_QUEEN, BLACK_KING, BLACK_BISHOP, BLACK_KNIGHT, BLACK_ROOK}, + {BLACK_PAWN, BLACK_PAWN, BLACK_PAWN, BLACK_PAWN, BLACK_PAWN, BLACK_PAWN, BLACK_PAWN, BLACK_PAWN}, + {EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY}, + {EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY}, + {EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY}, + {EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY}, + {WHITE_PAWN, WHITE_PAWN, WHITE_PAWN, WHITE_PAWN, WHITE_PAWN, WHITE_PAWN, WHITE_PAWN, WHITE_PAWN}, + {WHITE_ROOK, WHITE_KNIGHT, WHITE_BISHOP, WHITE_QUEEN, WHITE_KING, WHITE_BISHOP, WHITE_KNIGHT, WHITE_ROOK} + }; + + printf("\x1b[2J"); // Clear du terminal + printf("\x1b[H"); // Déplacement du curseur au (0, 0) + + print_tab(board); + + printf("\x1b[10;0H"); // Déplacement du curseur juste en dessous du tableau de jeu + return 0; +} + + +/* +for (int y = 0; y < 8; y++) { + for (int i = 0; i < 8; i++) { + if (y % 2 == 0) { + if (i % 2 == 0) { + printf(FG_WHITE_BG_WHITE"\u2588\u2588"); // White + } + if (i % 2 == 1) { + printf(FG_BLACK_BG_BLACK"\u2588\u2588"); // Black + } + } + if (y % 2 == 1) { + if (i % 2 == 1) { + printf(FG_WHITE_BG_WHITE"\u2588\u2588"); // White + } + if (i % 2 == 0) { + printf(FG_BLACK_BG_BLACK"\u2588\u2588"); // Black + } + } + } + printf("\n"); +} + + + + for (int y = 0; y < 8; y++) { + for (int i = 0; i < 8; i++) { + if (y == 1) { + switch (i) { + case 0: + printf(FG_BLACK_BG_136); + printf("\x1b[1;%dH"B_ROOK, 7 * 2 + 1); + printf("\x1b[8;%dH"W_ROOK, 0 * 2 + 1); + printf(FG_BLACK_BG_WHITE); + printf("\x1b[8;%dH"W_ROOK, 7 * 2 + 1); + printf("\x1b[1;%dH"B_ROOK, 0 * 2 + 1); + break; + case 1: + printf(FG_BLACK_BG_136); + printf("\x1b[1;%dH"B_KNIGHT, 1 * 2 + 1); + printf("\x1b[8;%dH"W_KNIGHT, 6 * 2 + 1); + printf(FG_BLACK_BG_WHITE); + printf("\x1b[8;%dH"W_KNIGHT, 1 * 2 + 1); + printf("\x1b[1;%dH"B_KNIGHT, 6 * 2 + 1); + break; + case 2: + printf(FG_BLACK_BG_WHITE); + printf("\x1b[1;%dH"B_BISHOP, 2 * 2 + 1); + printf("\x1b[8;%dH"W_BISHOP, 5 * 2 + 1); + printf(FG_BLACK_BG_136); + printf("\x1b[8;%dH"W_BISHOP, 2 * 2 + 1); + printf("\x1b[1;%dH"B_BISHOP, 5 * 2 + 1); + break; + case 3: + printf(FG_BLACK_BG_136); + printf("\x1b[1;%dH"B_QUEEN, 3 * 2 + 1); + printf("\x1b[8;%dH"W_KING, 4 * 2 + 1); + printf(FG_BLACK_BG_WHITE); + printf("\x1b[8;%dH"W_QUEEN, 3 * 2 + 1); + printf("\x1b[1;%dH"B_KING, 4 * 2 + 1); + break; } } } - printf("\n"); } for (int i = 0; i < 8; i++) { - printf("\x1b[7%dH"W_PAWN, i * 3 + 2); - printf("\x1b[2;%dH"B_PAWN, i * 3 + 2); + + if (i % 2 == 0) { + printf(FG_BLACK_BG_WHITE); + printf("\x1b[7;%dH"W_PAWN, i * 2 + 1); + printf(FG_BLACK_BG_136); + printf("\x1b[2;%dH"B_PAWN, i * 2 + 1); + } + if (i % 2 == 1) { + printf(FG_BLACK_BG_136); + printf("\x1b[7;%dH"W_PAWN, i * 2 + 1); + printf(FG_BLACK_BG_WHITE); + printf("\x1b[2;%dH"B_PAWN, i * 2 + 1); + + } + + } - printf("\x1b[8;%dH"W_ROOK, 0 * 3 + 2); - printf("\x1b[1;%dH"B_ROOK, 0 * 3 + 2); - printf("\x1b[8;%dH"W_ROOK, 7 * 3 + 2); - printf("\x1b[1;%dH"B_ROOK, 7 * 3 + 2); - printf("\x1b[8;%dH"W_KNIGHT, 1 * 3 + 2); - printf("\x1b[1;%dH"B_KNIGHT, 1 * 3 + 2); - printf("\x1b[8;%dH"W_KNIGHT, 6 * 3 + 2); - printf("\x1b[1;%dH"B_KNIGHT, 6 * 3 + 2); - printf("\x1b[8;%dH"W_BISHOP, 2 * 3 + 2); - printf("\x1b[1;%dH"B_BISHOP, 2 * 3 + 2); - printf("\x1b[8;%dH"W_BISHOP, 5 * 3 + 2); - printf("\x1b[1;%dH"B_BISHOP, 5 * 3 + 2); - printf("\x1b[8;%dH"W_QUEEN, 3 * 3 + 2); - printf("\x1b[1;%dH"B_QUEEN, 3 * 3 + 2); - printf("\x1b[8;%dH"W_KING, 4 * 3 + 2); - printf("\x1b[1;%dH"B_KING, 4 * 3 + 2); -/* - ███ ███ ███ ███ ███ ███ ███ ███ - ███ ███ ███ ███ ███ ███ ███ ███ - ███ ███ ███ ███ ███ ███ ███ ███ - ███ ███ ███ ███ ███ ███ ███ ███ - ███ ███ ███ ███ ███ ███ ███ ███ - ███ ███ ███ ███ ███ ███ ███ ███ - ███ ███ ███ ███ ███ ███ ███ ███ - ███ ███ ███ ███ ███ ███ ███ ███ -*/ - /* + ███ ███ ███ ███ ███ ███ ███ ███ + ███ ███ ███ ███ ███ ███ ███ ███ + ███ ███ ███ ███ ███ ███ ███ ███ + ███ ███ ███ ███ ███ ███ ███ ███ + ███ ███ ███ ███ ███ ███ ███ ███ + ███ ███ ███ ███ ███ ███ ███ ███ + ███ ███ ███ ███ ███ ███ ███ ███ + ███ ███ ███ ███ ███ ███ ███ ███ + + + printf("\x1b[37m╔═════╦═════╦═════╦═════╦═════╦═════╦═════╦═════╗\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" @@ -138,32 +250,5 @@ int print_tab() { printf("\x1b[16;%dH"W_KING, 4 * 7 + 4); printf("\x1b[2;%dH"B_KING, 4 * 7 + 4); -*/ - - - - return 0; -} - - -int main() { - - printf("\x1b[2J"); // Clear du terminal - printf("\x1b[H"); // Déplacement du curseur au (0, 0) - - print_tab(); - - - - - - - - - - - printf("\x1b[19;0H"); // Déplacement du curseur juste en dessous du tableau de jeu - return 0; -} - + */