summaryrefslogtreecommitdiff
path: root/console.c
diff options
context:
space:
mode:
Diffstat (limited to 'console.c')
-rw-r--r--console.c105
1 files changed, 105 insertions, 0 deletions
diff --git a/console.c b/console.c
new file mode 100644
index 0000000..6c1cda8
--- /dev/null
+++ b/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[8][8]) {
+ printf(" A B C D E F G H\n");
+ int tileColor = 1;
+ for(int r = 0; r < 8; r++) {
+ tileColor = !tileColor;
+ char* line = calloc(2 + (8 * 10), sizeof(char));
+ line[0] = '8' - r;
+ line[1] = ' ';
+ for(int c = 0; c < 8; c++) {
+ tileColor = !tileColor;
+ strcat(line, tileColor == 0 ? ANSI_COLOR_RED : ANSI_COLOR_RESET);
+ 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;
+ }
+ }
+ }
+ printf(line);
+ printf("\n" ANSI_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");
+ printf(message);
+ printf("\nPress any key to continue...\n");
+ while(getchar() != '\n');
+ getchar();
+}
+