管理游戏中的资源

时间:2013-12-05 03:12:55

标签: java class

首先,我不知道这是否是问题的正确名称。我找不到一个不太长的更好的。 我正在用Java编写RPG游戏,我刚开始编写一个随机级别的生成器。我的想法是创建一些枚举类型(让我们称之为DungeonStyle),其中包含生成器创建关卡所需的所有信息。作为示例,该信息包括房间和走廊的密度。 我想要在这个枚举类型中存储的另一个信息是,Spawner Tile可以在这样的级别内生成哪些生物。我还必须说,我实施生物的方式是为每个从Creature类继承的特定生物制作一个类。现在我将解释这个问题(适用于任何类型的非静态对象,而不仅仅是生物)。

我可以通过DungeonStyle找到将可能的生物分开的唯一方法是在SpawnerTile代码中。我会将DungeonStyle作为参数传递给SpawnerTile的构造函数,并在spawn()方法中进行区分。像这样:

if (style == Style_A) {
  level.add(new Creature_A());
}

if (style == Style_B) {
  level.add(new Creature_B());
}

这样可以正常工作,但显然不是我想要的。生物信息不是里面的 DungeonStyle。它是在它之外创建的。我只是找不到在DungeonStyle中存储可能的(生物)的方法来制作它们的实例。我认为我的问题与“&lt;&gt;”有些相关当我们创建ArrayList< some_object>时。

1 个答案:

答案 0 :(得分:0)

您可以使用可能的怪物枚举,执行类似

的操作
abstract class MonsterAbstract {//Class that all Monsters extend
    ....
}
enum Monster {
    FOO, BAR;
    public MonsterAbstract spawn() {
        switch(this) {
            case FOO: return new Foo();
            case BAR: return new Bar();
            default: return null; //should never get here
        }
    }
}
void SpawnerTileSpawn(Set<Monster> allowedMonsters) {//allowedMonsters stored within DungeonStyle
    for (Monster m : allowedMonsters) {
        m.spawn();
    }
}