0

我正在编写一个 2d java 游戏,随着地图滚动,我随机生成生物。但是,我需要随机选择一种生物类型——这意味着我需要从列表中随机选择一个类并创建它的一个新实例。

我的实体类目前采用构造函数参数(对游戏的引用),但如果它使此过程更容易,则可以移动它。

我最初打算使用一个定义实体类型的枚举以及“处理程序类”,但此时枚举系统对我来说效果不佳,因为对于不同实体的不同属性有太多逻辑。

4

2 回答 2

2

为你的怪物创建一个枚举,然后Math.random()用来选择一个:

public enum Monster {
    AcidBlob,
    Orc,
    Etc
}

Monster m = Monsters.values[Math.random() * Monsters.values().length];

您可以像普通类一样向枚举添加方法和字段。

于 2013-05-26T01:25:19.537 回答
0

如果您愿意,可以使用类名列表,并使用 Class.forName(className).newInstance() 创建一个实例。您不需要将结果转换为实际的类名,只需将所有怪物的公共超类转换为。

String randomMonsterName = listOfMonsterNames[randomIndex];
Monster newMonster = (Monster) (Class.forName(randomMonsterName).newInstance());

当然,它确实要求您的怪物可以仅使用默认构造函数来构造。(你可以不这样做,但它会变得更混乱。)

于 2013-05-26T02:24:30.673 回答