到目前为止,这是我遇到过的最尴尬的事情。我将它设置为整数来标记玩家拥有多少药水、 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/