【发布时间】:2026-01-11 07:30:01
【问题描述】:
我目前正在开发一个“物品掉落”系统,其中物品(及其属性)是在杀死敌人时随机生成的。我拥有的当前系统是类的层次结构,Item 是根超类。每个类都有所有子类共有的特定属性。
理想情况下,在删除项目时,程序会随机选择项目的一个属性并相应地向下移动层次结构树。例如,流程如下:
类 | 随机选择的属性确定树中的路径:
物品 | ItemType -> Equipable |装备类型 -> 武器 |武器类型 -> 等
示例代码:
abstract class Item
{
private Type itemType;
private String itemName;
private int itemLevel;
private Rarity itemRarity;
private boolean questItem;
private int itemPrice;
public Item(String name)
{
itemType = Type.randomize();
itemName = name;
itemLevel = randomizeLevel(pLvl, eLvl);
itemRarity = Rarity.randomize(bonus, pLvl, eLvl, iLvl);
questItem = false;
itemPrice = determinePrice();
}
}
Type 是一个枚举,决定了层次结构中的下一个级别。有了这个系统,我不知道如何让程序确定下一个级别,然后继续进行。
我遇到的问题是,我已经意识到,为了让它发挥作用,我必须从层次结构的底部向上工作。有没有办法让我从上到下工作,这意味着我可以从一个基本的 Item 类开始,然后按程序向下工作(使用我创建的方法来随机选择属性)。
如果没有,我有什么具体的方法可以实现这个系统吗?
【问题讨论】:
-
为什么你认为你必须从层次结构的底部向上工作?
-
当然可以。有什么问题?
-
@DavidK 我遇到的问题是,确定层次结构中下一个级别的属性是在类本身的构造函数中确定的。因此,就像现在一样,一旦确定了下一条路径,我不知道如何向下移动层次结构。我会更新问题
-
选择随机子类的代码可以在调用您要创建的对象的构造函数之前执行。当您随机选择一个类时,您就可以构建它。至少有两个答案基于此。