X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;ds=sidebyside;f=dvonn-board.h;h=a150b2541f7fdc5fe9566fded72662d6bec196d0;hb=HEAD;hp=b0ee8cc46a449dfd5d7d4f4201b68140520567fe;hpb=0eff3c58b93ea73e7f1aa866f6e317714479dd6e;p=dvonn diff --git a/dvonn-board.h b/dvonn-board.h index b0ee8cc..a150b25 100644 --- a/dvonn-board.h +++ b/dvonn-board.h @@ -45,6 +45,7 @@ typedef enum { typedef struct { dvonn_cell_type_t type; int height; + dvonn_bool_t contains_red; } dvonn_cell_t; #define DVONN_BOARD_X_SIZE 11 @@ -52,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 { @@ -60,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. */ @@ -87,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