summaryrefslogtreecommitdiff
path: root/chess.c
blob: 5593d79db35a239badc41f5f419e702ac7c89b02 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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;
}