#include #include #include #include "vector.h" #include "chesshelpers.h" #include "console.h" void draw_board(int** board) { printf(" A B C D E F G H\n"); int tileColor = 0; for(int r = 0; r < 8; r++) { tileColor = !tileColor; char* line = calloc(2 + (8 * 16) + 8, sizeof(char)); line[0] = '8' - r; line[1] = ' '; for(int c = 0; c < 8; c++) { tileColor = !tileColor; strcat(line, tileColor == 0 ? COLOR_CHESS_WHITE : COLOR_CHESS_BLACK); if(board[c][r] <= 6) { switch(board[c][r]) { case 0: strcat(line, " "); break; case pawn: strcat(line, "P"); break; case knight: strcat(line, "N"); break; case bishop: strcat(line, "B"); break; case rook: strcat(line, "R"); break; case queen: strcat(line, "Q"); break; case king: strcat(line, "K"); break; } } else { switch(board[c][r] - 6) { case pawn: strcat(line, "p"); break; case knight: strcat(line, "n"); break; case bishop: strcat(line, "b"); break; case rook: strcat(line, "r"); break; case queen: strcat(line, "q"); break; case king: strcat(line, "k"); break; } } strcat(line, COLOR_RESET " "); } printf(line); printf("\n" COLOR_RESET); free(line); } } vector_t user_input_pos() { char* inputString = malloc(3 * sizeof(char)); vector_t pos; printf("Enter coordinates: "); scanf("%2s", inputString); for(int i = 0; i < 2; i++) { if(inputString[i] <= '9' && inputString[i] >= '0') { pos.my = 8 - (inputString[i] - '0'); } else if(inputString[i] <= 'Z' && inputString[i] >= 'A') { pos.mx = inputString[i] - 'A'; } else if(inputString[i] <= 'z' && inputString[i] >= 'a') { pos.mx = inputString[i] - 'a'; } else { return init_vector(-1, -1); } } free(inputString); return pos; } void clear_screen() { system("@cls||clear"); } void warn_user(char* message) { clear_screen(); printf("\n" COLOR_WARN); printf(message); printf(COLOR_RESET "\nPress any key to continue...\n"); while(getchar() != '\n'); getchar(); }