これをモデル化する方法はたくさんあります。私がよく似たような問題に使用したことを示唆しています:
enum Direction {
NORTH, SOUTH, EAST, WEST;
}
class Position {
private final int x;
private final int y;
public static Stream<Position> getAllPositions();
public Stream<Position> getNeighbours();
public Optional<Position> positionInDirection(Direction direction);
// make sure you implement equals and hashCode
}
class Map {
private final Map<Position, Tile> tiles = new HashMap<>();
public Map() {
Position.getAllPositions().forEach(pos -> tiles.put(pos, new Tile());
}
public Tile getTile(Position position) {
return tiles.get(position);
}
}
これは、多くの有用なカプセル化を提供します。例えば、Position
クラスは、マップとエッジのサイズについて知る必要がある唯一のクラスです。今
隣接する位置は(例えば)爆弾を持っているかどうかを確認するために、あなたが使用します。任意の文法ミスがあるかどう
position.getNeighbours().map(map::getTile).anyMatch(Tile::hasBomb);
、この質問を編集すること自由に感じなさい。 – Russiancold