#include 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(Pieces board[8][8]) { for (int y = 0; y < 8; ++y) { for (int x = 0; x < 8; ++x) { if (y % 2 == 0) { 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 (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 (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 (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; } } } } for (int i = 0; i < 8; i++) { 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[37m╔═════╦═════╦═════╦═════╦═════╦═════╦═════╦═════╗\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" "╠═════╬═════╬═════╬═════╬═════╬═════╬═════╬═════╣\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" "╠═════╬═════╬═════╬═════╬═════╬═════╬═════╬═════╣\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" "╠═════╬═════╬═════╬═════╬═════╬═════╬═════╬═════╣\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" "╠═════╬═════╬═════╬═════╬═════╬═════╬═════╬═════╣\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" "╠═════╬═════╬═════╬═════╬═════╬═════╬═════╬═════╣\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" "╠═════╬═════╬═════╬═════╬═════╬═════╬═════╬═════╣\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" "╠═════╬═════╬═════╬═════╬═════╬═════╬═════╬═════╣\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" "╚═════╩═════╩═════╩═════╩═════╩═════╩═════╩═════╝\n"); printf("\x1b[m╔══════╦══════╦══════╦══════╦══════╦══════╦══════╦══════╗\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" "╠══════╬══════╬══════╬══════╬══════╬══════╬══════╬══════╣\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" "╠══════╬══════╬══════╬══════╬══════╬══════╬══════╬══════╣\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" "╠══════╬══════╬══════╬══════╬══════╬══════╬══════╬══════╣\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" "╠══════╬══════╬══════╬══════╬══════╬══════╬══════╬══════╣\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" "╠══════╬══════╬══════╬══════╬══════╬══════╬══════╬══════╣\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" "╠══════╬══════╬══════╬══════╬══════╬══════╬══════╬══════╣\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" "╠══════╬══════╬══════╬══════╬══════╬══════╬══════╬══════╣\n" "║ ║ ║ ║ ║ ║ ║ ║ ║\n" "╚══════╩══════╩══════╩══════╩══════╩══════╩══════╩══════╝\n"); for (int i = 0; i < 8; i++) { printf("\x1b[14;%dH"W_PAWN, i * 7 + 4); printf("\x1b[4;%dH"B_PAWN, i * 7 + 4); } printf("\x1b[16;%dH"W_ROOK, 0 * 7 + 4); printf("\x1b[2;%dH"B_ROOK, 0 * 7 + 4); printf("\x1b[16;%dH"W_ROOK, 7 * 7 + 4); printf("\x1b[2;%dH"B_ROOK, 7 * 7 + 4); printf("\x1b[16;%dH"W_KNIGHT, 1 * 7 + 4); printf("\x1b[2;%dH"B_KNIGHT, 1 * 7 + 4); printf("\x1b[16;%dH"W_KNIGHT, 6 * 7 + 4); printf("\x1b[2;%dH"B_KNIGHT, 6 * 7 + 4); printf("\x1b[16;%dH"W_BISHOP, 2 * 7 + 4); printf("\x1b[2;%dH"B_BISHOP, 2 * 7 + 4); printf("\x1b[16;%dH"W_BISHOP, 5 * 7 + 4); printf("\x1b[2;%dH"B_BISHOP, 5 * 7 + 4); printf("\x1b[16;%dH"W_QUEEN, 3 * 7 + 4); printf("\x1b[2;%dH"B_QUEEN, 3 * 7 + 4); printf("\x1b[16;%dH"W_KING, 4 * 7 + 4); printf("\x1b[2;%dH"B_KING, 4 * 7 + 4); */