summaryrefslogtreecommitdiff
path: root/chesshelpers.h
blob: b3a3d21cec382a7af772743855fb31a6822f798e (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
#include "vector.h"
#ifndef CHESS_HELPERS
#define CHESS_HELPERS
typedef enum {
	pawn = 1,
	knight = 2,
	bishop = 3,
	rook = 4,
	queen = 5,
	king = 6,
} piece_t;
typedef struct BoardState {
	int** pieces;
	//only falsified by moving the king or pawn
	//does not consider check or empty squares
	int whiteCanCastleKingside;
	int whiteCanCastleQueenside;
	int blackCanCastleKingside;
	int blackCanCastleQueenside;
	int lastPawnMove;
} board_t;
board_t init_board(int** pieces);
board_t make_move(board_t board, vector_t origin, vector_t end);
board_t clone_board(board_t board);
int in_board(vector_t position);
int is_empty(board_t board, vector_t position);
int is_color(board_t board, vector_t position, int color);
int would_have_been_pawn(board_t board, vector_t position, int color);
char* get_readable_coords(vector_t position);
char* get_move_name(board_t board, vector_t origin, vector_t end);
#endif