diff options
Diffstat (limited to 'src/console.c')
| -rw-r--r-- | src/console.c | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/src/console.c b/src/console.c new file mode 100644 index 0000000..e675ba2 --- /dev/null +++ b/src/console.c @@ -0,0 +1,105 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#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) + 9, 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(); +} |
