Вот краткое описание вашей проблемы:
int[][] board; // row tiles for ultimate mapping experience!
private static int BLOCKED = 24;
public boolean blocked(int tx, int ty) {
return board[ty][tx] == BLOCKED;
}
Это ясно показывает, что вы блокируете только «24». Есть несколько подходов, в которых вы можете сделать это. Глядя на ваш код, я согласен с Джоном Скитом, что он не очень объектно-ориентирован, и лучше использовать инкапсуляцию и объекты, которые помогут вам в вашем коде и дизайне. Но чтобы ответить на ваш вопрос, вы можете просто поместить заблокированные листы в HashSet и проверить, содержат ли они лист, а затем вернуть его как «блокируемый». Э.Г.
private static final HashSet<Integer> BLOCKED_TILES = new HashSet<Integer>();
static {
BLOCKED_TILES.add(24);
BLOCKED_TILES.add(1);
//add more tiles here
}
public boolean blocked(int tx, int ty) {
return BLOCKED_TILES.contains(board[ty][tx]);
}