summaryrefslogtreecommitdiff
path: root/src/console.c
diff options
context:
space:
mode:
authorKai Stevenson <kai@kaistevenson.com>2023-03-19 23:20:53 -0700
committerKai Stevenson <kai@kaistevenson.com>2023-03-19 23:20:53 -0700
commite33dc4755fb08ed08f30b5e1af65457556d5bcb7 (patch)
treec075e9c4f076a7772eb5c0665fbd137e2fd6c3ab /src/console.c
parent26321477ae47bbf5d89b651842d8295e9ea9ea5d (diff)
fscomch--communication between multiple chess processes
Diffstat (limited to 'src/console.c')
-rw-r--r--src/console.c105
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();
+}