文本如何将项目添加到结构/类'inventory'而无需提前定义每个项目?

text how to add items to 'inventory' struct/class without defining each in advance?

本文关键字:项目 定义 inventory 结构 添加 文本      更新时间:2023-10-16

到目前为止,这是我遇到的最尴尬的事情。我将其设置为整数,以标记玩家有多少药剂、钥匙,但我不确定如何获得随机物品,如岩石、CPU(在Dunnet的情况下)、棍子、铲子等。

我不想弄清楚游戏中的每一项,然后给它分配一个变量。必须有一个更简单的方法。我曾想过使用两个数组来完成这项工作,一个是字符串,另一个是int,但由于各种原因,这都不起作用,其中一个原因是我不能执行字符串名称[10],我发现将两者关联起来有问题,而且。。。清单还在继续,我相信那样做是行不通的。

其他的都是类btw,我不喜欢使用structs(但这将在整个代码中使用,并在任何地方访问),到目前为止,我的代码是:

struct Inventory{
    int Keys;
    int Potions;
    int getinventory() const { return Keys, Potions; }
    void addkey(int amt){ Keys += amt; }
    void addpotion(int amt){ Potions += amt; }
    void usepotion(){Potions -= 1;}
    void usekey()
    {
        if (Keys >> 0)
        {
            Keys -= 1;
        }
        else if (Keys << 1)
        {
            cout << "You do not have a key!" << endl;
        }
    }
};

我肯定还在开发getinventory(),因为我不确定我在用这段代码做什么,甚至不确定我是否在使用它。我唯一能做到这一点的方法是,在游戏中创建并添加每个变量时定义它吗?

我本来打算用这种方式处理武器和怪物。。。但没有一个动态的库存系统真是太糟糕了。我想专注于分析用户输入,而不必回到我的主要类一致的头。。。另外,我甚至还没有完整地写下这个故事,所以我不知道发生了什么。。。

在LPMuds(及类似程序)中解决此问题的方法是创建一个通用对象模板。通用模板会有一些东西,比如短描述、长描述、定义权重、值等。

然后特定的对象类型继承这个类。例如,药剂是一个具有所有这些属性的对象,但它也有可以采取的额外动作(功能),可能还有不同的属性。。。比如味道和颜色。

武器可以继承一般类别,将伤害和命中率等定义为一个广义概念。然后一把剑可以继承这个武器(继承通用对象),并可以进一步精炼。

通过这种方式,您只需要您的库存就可以处理通用对象。对象本身可以定义附加的属性和动作。这也意味着您不需要将每个对象预定义为其自己的唯一变量。

创建这样的结构怎么样:

struct InventoryItem
{
  enum { Key, Potion, Rock, Stick, Shovel } type_;
  unsigned int num_;
}

然后使CCD_ 1包含类似InventoryItem的CCD_。