X-Git-Url: https://git.cworth.org/git?p=dvonn;a=blobdiff_plain;f=dvonn-board.c;fp=dvonn-board.c;h=eeab83076294649ebe0ccdaa846ca59307eef1e0;hp=f8f9b93843556f3e20b482418c7ca75f768f28d2;hb=7e10cab22cd0cd20ff48bf5665f0f7536f1ad032;hpb=68e0718609201b5aee4d4371f7766da5a6c8808c diff --git a/dvonn-board.c b/dvonn-board.c index f8f9b93..eeab830 100644 --- a/dvonn-board.c +++ b/dvonn-board.c @@ -101,6 +101,19 @@ dvonn_board_cell_occupied (dvonn_board_t *board, return TRUE; } +dvonn_bool_t +dvonn_board_cell_owned_by (dvonn_board_t *board, + int x, int y, + dvonn_player_t player) +{ + if (! dvonn_board_cell_occupied (board, x, y)) + return FALSE; + + /* Cast here to avoid compiler warning about mixing enum types in + * a comparison. */ + return board->cells[x][y].type == (dvonn_cell_type_t) player; +} + dvonn_bool_t dvonn_board_cell_surrounded (dvonn_board_t *board, int x, int y) @@ -152,7 +165,7 @@ dvonn_board_move_legal (dvonn_board_t *board, return FALSE; } - if (board->cells[x1][y1].type != board->player) { + if (! dvonn_board_cell_owned_by (board, x1, y1, board->player)) { *error = "You cannot move your opponent's stack"; return FALSE; }