c++ - 文本冒险 - 如何在不预先定义每个项目的情况下将项目添加到 'inventory' 结构/类?

标签 c++ adventure

到目前为止,这是我遇到过的最尴尬的事情。我将它设置为整数来标记玩家拥有多少药水、 key ,但我不确定我如何才能获得随机元素,如岩石、CPU(在 Dunnet 的情况下)、棍子、铲子等。

我不想弄清楚游戏中的每个项目并为其分配一个变量。必须有更简单的方法。我想过使用两个数组,一个是字符串,一个是 int,来完成这项工作 - 但由于多种原因这不会起作用,一个是我不能做字符串 stringname [10],我看到将两者相关联的问题,并且... list 还在继续,我敢肯定它不会那样工作。

顺便说一句,其他所有东西都是一个类,我不喜欢使用结构(但这将在整个代码中使用,并且在任何地方都可以访问),到目前为止我的代码是:

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(和类似的)中解决这个问题的方法是创建一个通用对象模板。通用模板将包含简短描述、详细描述、定义重量、值等内容。

特定对象类型则继承此类。例如,药水是具有所有这些属性的对象,但它还具有可以采取的其他操作(功能)和可能不同的属性……例如味道和颜色。

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

这样,您只需要您的库存能够处理通用对象。对象本身可以定义额外的属性和 Action 。这也意味着您不需要将每个对象预定义为它自己的唯一变量。

关于c++ - 文本冒险 - 如何在不预先定义每个项目的情况下将项目添加到 'inventory' 结构/类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29481336/

相关文章:

c++ - 带有指针参数的函数模板重载决策

java - 用于解析简单的基于文本的数据文件的正则表达式

data-structures - OCaml:为文本冒险游戏设计数据类型

java - 如何延迟在 TextView 中显示文本(逐字逐句)

python - 文本冒险游戏 bool 变量对我不起作用

Python (linux) 基于文本的游戏输入错误

c++ - C++ 中的枚举

c++ - 思考C++源码错误

c++ - 支持函数声明应该去哪里?

c++ - GetAsyncKeyState 使我的程序在打开时崩溃