X-Git-Url: https://git.cworth.org/git?p=dvonn;a=blobdiff_plain;f=dvonn-board.h;h=a150b2541f7fdc5fe9566fded72662d6bec196d0;hp=2971a2738e31262c5658b8c944a74933c81d7f81;hb=HEAD;hpb=1e29ece3252138d372b47499dd4c77f01413c7fc diff --git a/dvonn-board.h b/dvonn-board.h index 2971a27..a150b25 100644 --- a/dvonn-board.h +++ b/dvonn-board.h @@ -53,7 +53,8 @@ typedef struct { typedef enum { DVONN_PHASE_PLACEMENT, - DVONN_PHASE_MOVEMENT + DVONN_PHASE_MOVEMENT, + DVONN_PHASE_GAME_OVER } dvonn_phase_t; typedef struct { @@ -61,6 +62,7 @@ typedef struct { dvonn_phase_t phase; dvonn_player_t player; int moves; + int score[2]; /* index by dvonn_player_t */ } dvonn_board_t; /* Initialize a board for a new game of DVONN. */ @@ -88,4 +90,24 @@ dvonn_board_move (dvonn_board_t *board, int x2, int y2, char **error); +/* Is the cell at (x,y) occupied by a piece. Returns FALSE for all + * out-of-bounds coordinates. */ +dvonn_bool_t +dvonn_board_cell_occupied (dvonn_board_t *board, + int x, int y); + +/* Is the cell at (x,y) occupied by a piece (or stack) with the given + * player's piece at the top. Returns FALSE for all out-of-bounds + * coordinates. */ +dvonn_bool_t +dvonn_board_cell_owned_by (dvonn_board_t *board, + int x, int y, dvonn_player_t player); + +/* Is the cell at (x,y) surrounded by other pieces, (such that it is + * not legal for a piece at (x,y) to move. */ +dvonn_bool_t +dvonn_board_cell_surrounded (dvonn_board_t *board, + int x, int y); + + #endif