X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=dvonn-board.h;h=2971a2738e31262c5658b8c944a74933c81d7f81;hb=1e29ece3252138d372b47499dd4c77f01413c7fc;hp=c1c82707c180904fd7a96387a86fbc27716a2b1c;hpb=c63c776c52cb865bc510b1feb9d17abe47086e5c;p=dvonn diff --git a/dvonn-board.h b/dvonn-board.h index c1c8270..2971a27 100644 --- a/dvonn-board.h +++ b/dvonn-board.h @@ -37,6 +37,7 @@ typedef enum { typedef enum { DVONN_CELL_BLACK = DVONN_PLAYER_BLACK, DVONN_CELL_WHITE = DVONN_PLAYER_WHITE, + DVONN_CELL_RED, DVONN_CELL_EMPTY, DVONN_CELL_INVALID } dvonn_cell_type_t; @@ -44,21 +45,38 @@ 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 #define DVONN_BOARD_Y_SIZE 5 +typedef enum { + DVONN_PHASE_PLACEMENT, + DVONN_PHASE_MOVEMENT +} dvonn_phase_t; + typedef struct { dvonn_cell_t cells[DVONN_BOARD_X_SIZE][DVONN_BOARD_Y_SIZE]; - + dvonn_phase_t phase; dvonn_player_t player; + int moves; } dvonn_board_t; /* Initialize a board for a new game of DVONN. */ void dvonn_board_init (dvonn_board_t *board); +/* Place a piece at (x,y) where (0,0) is at the upper-left corner of + * the board. Returns TRUE if the move is legal and is performed. If + * the move is not legal this function returns FALSE, no change will + * be performed on the board, and *error will be set to a string + * describing why the move is illegal.*/ +int +dvonn_board_place (dvonn_board_t *board, + int x, int y, + char **error); + /* Move a piece from (x1,y1) to (x2,y2) where (0,0) is at the * upper-left corner of the board. Returns TRUE if the move is legal * and is performed. If the move is not legal this function returns