問題のコードの概要は次のとおりです。
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」のみをブロックしていることを明確に示しています。これを行うことができるいくつかのアプローチがあります。あなたのコードを見ると、私はJon Skeetに同意します。それはあまりオブジェクト指向ではなく、コードとデザインを支援するためにカプセル化とオブジェクトを使用する方が良いということです。しかし、あなたの質問に答えるには、ブロックされたタイルを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]);
}