sussed out the move model (i think)
This commit is contained in:
+38
-10
@@ -68,21 +68,49 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
piece_e piece;
|
||||
unsigned int piece_move_count;
|
||||
relative_move_t moves[MAX_PIECE_MOVE_COUNT];
|
||||
unsigned int piece_move_count;
|
||||
} valid_move_t;
|
||||
|
||||
/** FIXME: ALSO DEPENDS ON THE STATE OF THE GAME - e.g. a pawn cannot move two places in the middle of the game but can in the first round */
|
||||
/** FIXED: ALSO DEPENDS ON THE STATE OF THE GAME -
|
||||
* e.g. a pawn cannot move two places in the middle
|
||||
* of the game but can in the first round
|
||||
* => ASSUME NO OTHER PIECES - then ALWAYS CHECK
|
||||
* FOR PIECE COLLISIONS and FOR ROUND COUNT
|
||||
* (pawn 1 || 2 move)
|
||||
*/
|
||||
|
||||
/** MAYBE: consider the POV from both sides???!!! */
|
||||
/**
|
||||
* the NONE, PAWN, KNIGHT and KING pieces' relative_moves are
|
||||
* treated like specific coordinates relative to their
|
||||
* position,
|
||||
* whereas the BISHOP, ROOK and QUEEN pieces' 'moves'
|
||||
* are treated as *directions* in which they can move rather than
|
||||
* absolute x,y values -> e.g. the rook can move
|
||||
* up, down, left, right * n -> and then bounds & edge cases are checked
|
||||
*/
|
||||
#define DEFAULT_VALID_MOVES \
|
||||
(valid_move_t[PIECE_COUNT]){\
|
||||
.piece = NONE, .count = 0, .moves = {}\
|
||||
.piece = PAWN, .count = 0, .moves = {}\
|
||||
.piece = ROOK, .count = 0, .moves = {}\
|
||||
.piece = KNIGHT, .count = 0, .moves = {}\
|
||||
.piece = BISHOP, .count = 0, .moves = {}\
|
||||
.piece = QUEEN, .count = 0, .moves = {}\
|
||||
.piece = KING, .count = 0, .moves = {}\
|
||||
}
|
||||
{NONE, (relative_move_t[0]){}, 0},\
|
||||
{PAWN, (relative_move_t[4]){\
|
||||
{0, -1}, {-1, -1}, {+1, -1}, {0, -2}\
|
||||
}, 4},\
|
||||
{ROOK, (relative_move_t[4]){\
|
||||
{0, -1}, {0, +1}, {-1, 0}, {+1, 0}\
|
||||
}, 14},\
|
||||
{KNIGHT, (relative_move_t)[8], {\
|
||||
{-1, -2}, {+1, -2}, {-2, -1}, {-2, +1},\
|
||||
{+2, -1}, {+2, +1}, {-1, -2}, {-1, +2}\
|
||||
}, 8},\
|
||||
{BISHOP, (relative_move_t[4]){\
|
||||
{-1, -1}, {-1, +1}, {+1, -1}, {+1, +1}\
|
||||
}, 14},\
|
||||
{QUEEN, (relative_move_t[8]){\
|
||||
{0, -1}, {0, +1}, {-1, 0}, {+1, 0},\
|
||||
{-1, -1}, {-1, +1}, {+1, -1}, {+1, +1}\
|
||||
}, 27}\
|
||||
}\
|
||||
|
||||
typedef enum {
|
||||
CHECKMATE,
|
||||
|
||||
Reference in New Issue
Block a user