我正在用Java创建游戏推箱子。
地图/运动场是10x10的数组。
数组中的一个字段可以包含5个不同对象之一
目标领域
胸部
播放器
壁
空字段(这是玩家可以走过的空白字段)
现在我想将该地图存储在MySql数据库中,但我不确定如何处理。
我不知道桌子会是什么样子。
稍后我应该能够拉地图,以便玩家可以立即玩或修改该字段。
我考虑过使用100个字符的字符串,并且每个对象都有一个特定的字符,因此我知道它的含义和位置。
最佳答案
是的,因此一种方法是让表具有基于列/行的唯一键。然后,您可以存储相对于该列/行的键,这些键链接到目标字段,箱子,玩家,墙壁,空白字段。
编辑:
要回答有关此答案的问题,您可以创建一个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);
}
}
关于java - 如何在MySQL工作台中存储10x10 map /游戏场?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60815346/