Да, поэтому одним из подходов будет иметь таблицу с уникальным ключом на основе столбца / строки. Затем вы можете сохранить ключ (и) относительно этого столбца / строки, которые связаны с целевым полем, сундуком, игроком, стеной, пустым полем.
Редактировать: чтобы ответить на ваш вопрос по этому ответу, Вы можете создать класс Location, который имеет и x и y, который представляет точку в сетке. Затем переопределите equals / hashCode, чтобы сделать его уникальным. Затем вы можете использовать карту для хранения локации и соответствующего GameObject в этой локации!
public class Location {
private final int x;
private final int y;
private final int hashCode;
public Location(int x, int y) {
this.x = x;
this.y = y;
this.hashCode = Objects.hash(x, y);
}
@Override
public int hashCode() {
return hashCode;
}
@Override
public boolean equals(Object other) {
if (other == this) {
return true;
}
if (other instanceof Location) {
Location otherLocation = (Location) other;
return otherLocation.x == x && otherLocation.y == y;
}
return false;
}
}
interface GameObject {
}
class TargetField implements GameObject {
}
class MyGame {
private final Map<Location, GameObject> map;
MyGame(Map<Location, GameObject> map) {
this.map = map;
}
public void set(Location location, GameObject object) {
map.put(location, object);
}
}