Verifycations:
私はJavaでゲーム倉庫番を作成しています。
マップ/競技場は、10×10の配列です。5つの別のオブジェクトの1つを含むことができ、アレイ内の一つのフィールド
- ターゲットフィールド
- 胸
- プレーヤー
- 壁
- 空のフィールド(これはプレイヤーがオーバー歩くことができるだけで空白のフィールドです)
今私はそう確かにこれをアプローチする方法はないよMySQLデータベースにそのマップを保存したいです。私は、テーブルがどのように見えるか分かりません。プレイヤーは即座に再生したり、フィールドを変更することができますので、後で私に地図を引っ張ることができるはずです。
私は、100文字の文字列を使用する方法について考えて、私はそれの意味と場所を知っているように、各オブジェクトは、特定の文字を持っています。
ジェイソン:
うんそう一つのアプローチは、列/行に基づくユニークキーを持つテーブルを持っているであろう。次に、リンク対象フィールドに、胸、プレーヤ、壁、空のフィールドすなわちその列/行に対するキーを格納することができます。
編集:この回答にあなたの質問に答えるために、あなたはグリッドのスポットを表し、xとyを持っている場所のクラスを作成することができます。そして、それを一意にするために等号/のhashCodeをオーバーライドします。そして、あなたはその場所に立地し、相対的なゲームオブジェクトを格納するために地図を使用することができます!
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);
}
}