【发布时间】:2014-05-18 21:40:01
【问题描述】:
public Game() {
gameState = OVERWORLD;
objects = new ArrayList<GameObject>();
remove = new ArrayList<GameObject>();
battleObjects = new ArrayList<GameObject>();
battleRemove = new ArrayList<GameObject>();
player = new Player(Display.getWidth() / 2 - player.SIZE / 2, Display.getHeight() / 2 - player.SIZE / 2);
objects.add(player);
objects.add(new Circle(32, 32, player));
objects.add(new Imp(300, 100, player));
}
public void update() {
if (gameState == BATTLE) {
for (GameObject i : battleObjects) {
if (!i.isRemoved())
i.update();
else
battleRemove.add(i);
}
}
else {
for (GameObject i : objects) {
if (!i.isRemoved())
i.update();
else
remove.add(i);
}
}
}
public void render() {
if (gameState == BATTLE) {
for (GameObject i : battleObjects)
i.render();
}
else {
for (GameObject i : objects)
i.render();
}
}
public static void createNewBattle(Player p, Monster m) {
battleObjects.add(p);
battleObjects.add(m);
gameState = BATTLE;
}
我完全理解为什么会发生这种情况,但我终其一生都无法找到解决问题的方法...谁能帮助我???我在这里坐了几个小时,试图找到另一种方法。我只是想用战斗对象创建一个数组。
【问题讨论】:
-
我对 GameObject 类(尤其是这个“isRemoved”方法)很好奇。为什么你需要将一个对象(重新)移动到一个单独的集合中?
-
在我的游戏中,有一个物品可以被拾取,从而设置一个标志来从世界中移除该对象并将其放置在玩家库存中。它就像一个带有随机战斗的口袋妖怪角色扮演游戏,所以我创建了一个单独的战斗数组列表,用于仅渲染和更新战斗中的对象