summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--chess.c91
2 files changed, 94 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1472834
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+a.out
+a.exe
+*.swp
diff --git a/chess.c b/chess.c
new file mode 100644
index 0000000..5593d79
--- /dev/null
+++ b/chess.c
@@ -0,0 +1,91 @@
+#include <stdio.h>
+#include <stdlib.h>
+enum piece {
+ pawn = 1,
+ knight = 2,
+ bishop = 3,
+ rook = 4,
+ queen = 5,
+ king = 6
+};
+void draw_board(int board[8][8]) {
+ printf(" ABCDEFGH\n");
+ for(int r = 0; r < 8; r++) {
+ char* line = calloc(10, sizeof(char));
+ line[0] = '8' - r;
+ line[1] = ' ';
+ for(int c = 0; c < 8; c++) {
+ if(board[c][r] <= 6) {
+ switch(board[c][r]) {
+ case 0:
+ line[c + 2] = ' ';
+ break;
+ case pawn:
+ line[c + 2] = 'P';
+ break;
+ case knight:
+ line[c + 2] = 'N';
+ break;
+ case bishop:
+ line[c + 2] = 'B';
+ break;
+ case rook:
+ line[c + 2] = 'R';
+ break;
+ case queen:
+ line[c + 2] = 'Q';
+ break;
+ case king:
+ line[c + 2] = 'K';
+ break;
+ }
+ }
+ else {
+ switch(board[c][r] - 6) {
+ case 0:
+ line[c + 2] = ' ';
+ break;
+ case pawn:
+ line[c + 2] = 'p';
+ break;
+ case knight:
+ line[c + 2] = 'n';
+ break;
+ case bishop:
+ line[c + 2] = 'b';
+ break;
+ case rook:
+ line[c + 2] = 'r';
+ break;
+ case queen:
+ line[c + 2] = 'q';
+ break;
+ case king:
+ line[c + 2] = 'k';
+ break;
+ }
+ }
+ }
+ printf(line);
+ printf("\n");
+ free(line);
+ }
+}
+void clear_screen() {
+ system("@cls||clear");
+}
+int main() {
+ int board[8][8] = {
+ { rook + 6, pawn + 6, 0, 0, 0, 0, pawn, rook },
+ { knight + 6, pawn + 6, 0, 0, 0, 0, pawn, knight },
+ { bishop + 6, pawn + 6, 0, 0, 0, 0, pawn, bishop },
+ { queen + 6, pawn + 6, 0, 0, 0, 0, pawn, queen },
+ { king + 6, pawn + 6, 0, 0, 0, 0, pawn, king },
+ { bishop + 6, pawn + 6, 0, 0, 0, 0, pawn, bishop },
+ { knight + 6, pawn + 6, 0, 0, 0, 0, pawn, knight },
+ { rook + 6, pawn + 6, 0, 0, 0, 0, pawn, rook }
+ };
+ clear_screen(board);
+ draw_board(board);
+ return 0;
+}