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)
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;
}
board->moves++;
+ dvonn_board_next_player (board);
+
if (board->moves == 49) {
board->phase = DVONN_PHASE_MOVEMENT;
board->moves = 0;
+ board->player = DVONN_PLAYER_WHITE;
}
return TRUE;