文本如何将项目添加到结构/类'inventory'而无需提前定义每个项目?
text how to add items to 'inventory' struct/class without defining each in advance?
到目前为止,这是我遇到的最尴尬的事情。我将其设置为整数,以标记玩家有多少药剂、钥匙,但我不确定如何获得随机物品,如岩石、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_。
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在 Mac 上使用 CMAKE 将 FFTW 和 FFTWPP 链接到项目中时未定义的符号
- MacOS 上的 Xcode 11 项目不在一个函数中使用 sin 和 cos:未定义的符号"___sincosf_stret"
- 令人困惑的定义指令在C ++项目中
- 自定义 QML QQuick彩绘项目成员锚点未在 qml 中设置为父级
- 自定义构建文件更改不会触发VS 2017中的项目重建
- 为Qt项目树中的所有项目定义全局宏
- 我不断收到对项目"xxx"的错误未定义引用
- 是否可以在相同的命名空间中,但在不同的嵌套项目中定义具有相同名称的类
- C++ priority_queue与自定义比较器并删除任何项目
- 如何解决:自定义QGraphics项目接收鼠标新闻事件坐标延迟/滞后?
- 我可以在将项目编译为静态库(未定义的引用)时在代码中使用 QImage 吗?
- 优点和缺点 在类内为大型项目定义的内联朋友助手免费函数
- 使用 QtCreator 部署自定义构建的项目
- Cmake :几个使用自定义目标进行测试的项目
- 编译Qt项目给出了对运算符delete(void*,unsigned int)的未定义引用
- Qt项目与自定义共享库交叉编译Qt
- 如何获取外部项目定义的目标的输出路径?
- std :: vector :: erase(item)需要为项目定义的分配操作员
- 根据项目定义不同的功能