typedef enum {
DVONN_PHASE_PLACEMENT,
- DVONN_PHASE_MOVEMENT
+ DVONN_PHASE_MOVEMENT,
+ DVONN_PHASE_GAME_OVER
} dvonn_phase_t;
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. */
int x2, int y2,
char **error);
-/* Pass rather than moving, allowing the turn to pass to the
- * opponent. This should only be allowed if there are no legal moves,
- * but that is not yet enforced. Returns TRUE if the pass succeeds. */
-int
-dvonn_board_pass (dvonn_board_t *board);
-
/* 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