initial files

This commit is contained in:
2021-10-27 16:09:56 +02:00
commit 264459dc0f
13 changed files with 1468 additions and 0 deletions

56
src/chessdefs.h Normal file
View File

@@ -0,0 +1,56 @@
#ifndef CHESSDEFS_H
#define CHESSDEFS_H
/* We use the following notation
* Bit Binary Piece/color
*
* 0 0000 0001 White
* 1 0000 0010 Black
*
* 2 0000 0100 Pawn
* 3 0000 1000 Knight
* 4 0001 0000 Bishop
* 5 0010 0000 Rook
* 6 0100 0000 Queen
* 7 1000 0000 King
*/
//#define INVALID -1 /* unused in 0x88 */
#define EMPTY 0
#define WHITE (0) /* 0000000 0 */
#define BLACK (1) /* 0000000 1 */
#define PAWN (1 << 1) /* 0000001 0 */
#define KNIGHT (1 << 2) /* 0000010 0 */
#define BISHOP (1 << 3) /* 0000100 0 */
#define ROOK (1 << 4) /* 0001000 0 */
#define QUEEN (1 << 5) /* 0010000 0 */
#define KING (1 << 6) /* 0100000 0 */
#define MASK_COLOR 0x01 /* 0000000 1 */
#define MASK_PIECE 0x7E /* 0111111 0 */
#define COLOR(p) ((p) & MASK_COLOR)
#define PIECE(p) ((p) & MASK_PIECE)
#define IS_WHITE(p) (!COLOR(p))
#define IS_BLACK(p) (COLOR(p))
#define SET_WHITE(p) ((p) &= ~MASK_COLOR)
#define SET_BLACK(p) ((p) |= MASK_COLOR)
#define SET_COLOR(p, c) (!(c)? SET_WHITE(p): SET_BLACK(p))
#define TURN_WHITE 0
#define TURN_BLACK 1
typedef unsigned char piece_t, color_t;
#define CASTLE_WK 0x01
#define CASTLE_WQ 0x02
#define CASTLE_BK 0x04
#define CASTLE_BQ 0x08
#define CASTLE_W 0x03 /* white castle mask */
#define CASTLE_B 0x0C /* black castle mask */
#endif