特定のオブジェクト (ボックス、コンテナーなど) を適切な場所に配置する必要がある 2D Java ゲームを開発しています。
- 各オブジェクトは、プレイヤーが配置すべき目的地 [X,Y] を取得しました。
しかし問題は、同じタイプのオブジェクトが複数ある場合、それをどの位置に配置するかを (推測するのではなく) プレーヤーが決定する必要があることです。
今、この問題を処理するための適切なロジックを作成する方法を考えています。XML ファイルからすべてのレベル データをロードしています。私の考えは次のとおりです。
- XML からレベルをロードする際に、すべてのオブジェクトを配列リストに追加します。
- すべてのオブジェクトをロードした後、このリストを繰り返し処理し、すべてのオブジェクトを新しい配列リストに並べ替えます。オブジェクトの種類 (ボックス、コンテナーなど) ごとに 1 つずつです。後で、これらのリストを繰り返し処理し、オブジェクトが現在可能な位置に配置されていることを確認できます。
まだよくわかりませんが、助けていただければ幸いです。
編集:@EZSlaverからの回答に続いて、私はこれに来ました:
private HashMap<ObjectType, ArrayList<GameObject>> map = new HashMap<ObjectType, ArrayList<GameObject>>();
public void addObjekt(GameObject objekt)
{
if (map.containsKey(objekt.getType()))
{
map.get(ObjectType.TYPE_BOX).add(objekt);
}
else
{
ArrayList<GameObject> arrayOfObjects = new ArrayList<GameObject>();
arrayOfObjects.add(objekt);
map.put(objekt.getType(), arrayOfObjects);
}
}
public static void main(String[] args)
{
new Test();
}
private enum ObjectType
{
TYPE_BOX,
TYPE_CONTAINER
}
/**
* Subclass of GameObject, box (name of game object) representation
*/
public class Box extends GameObject
{
public Box(float destX, float destY)
{
super(ObjectType.TYPE_BOX, destX, destY);
}
}
/**
* Subclass of GameObject, Container (name of game object) representation
*/
public class Container extends GameObject
{
public Container(float destX, float destY)
{
super(ObjectType.TYPE_CONTAINER, destX, destY);
}
}
/**
* Base type class, any object representation
*/
public class GameObject
{
private ObjectType Type;
private float destX;
private float destY;
public GameObject(ObjectType type, float destX, float destY)
{
super();
Type = type;
this.destX = destX;
this.destY = destY;
}
public ObjectType getType()
{
return Type;
}
public float getDestX()
{
return destX;
}
public float getDestY()
{
return destY;
}
}