我正在开发一个 2D java 游戏,其中使用必须将某些对象(如盒子、容器等)放置在适当的位置。
- 每个对象,都有它的目的地 [X,Y] 玩家应该放置它们的地方。
但问题是,当有多个相同类型的物体时,应该由玩家决定他想将它放置在哪个位置(而不是猜测)
现在我想知道如何创建适当的逻辑来处理这个问题,我正在从 XML 文件加载所有级别的数据,我的想法是:
- 从 XML 加载关卡时,将所有对象添加到数组列表
- 加载所有对象后,遍历此列表,并将所有对象排序到新的数组列表中,每种对象类型(如盒子、容器)一个,所以稍后,我可以遍历这些列表并检查对象当前是否放置在任何可能的位置。
虽然我仍然不确定,但一些帮助将不胜感激。
编辑:遵循@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;
}
}