在C++游戏中与库存系统作斗争
Struggling with Inventory system on C++ Game
所以我在向项目添加数量时遇到了问题。例如,物品拳头的数量为1,id为1。在void addQuantity(int id,int quantity(函数中,我"做到了",所以当你键入addQuantity时(1,1(,例如,物品拳头(稀有度为1(将得到数量2,但它什么都不做。你们能帮我修吗?我只需要一个有效的addQuantity、setQuantity和removeQuantity函数。
代码:https://hastebin.com/itacijacur.cpp
addQuantity
执行的代码是:
this->inventoryVec[id].quantity += quantity;
在这里,您使用id
作为inventoryVec
中的索引。这与Item的id不同。在您在代码中设置的场景中,"第一个"项的索引实际上是0,因为它是添加到向量中的唯一一个项。
如果您真的希望addQuantity
方法按项目的ID号访问项目,则需要循环使用inventoryVec
向量来搜索ID号与该方法的id
参数匹配的项目。
您正在访问向量的索引作为索引1,您希望扫描向量并尝试找到具有正确id的项,如果找到,则您希望对该项进行更改。将addQuantity函数更改为
void Inventory::addQuantity(int id, int quantity)
{
for (int i = 0; i < inventoryVec.size(); i++)
{
if (inventoryVec.at(i).getID() == id)
{
inventoryVec.at(i).quantity += quantity;
}
}
}
这将在向量中循环并找到正确的项目,假设项目索引等于其ID。希望这有帮助,任何问题都可以问。
相关文章:
- C++,系统无法执行指定的程序
- 在UNIX系统中使用DIR查找文件的字节大小
- 错误处理.将系统错误代码映射到泛型
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 在C++游戏中与库存系统作斗争
- 文件系统:复制功能的速度秘诀是什么
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 在gtest.中使用fff.h模拟系统API
- 如何制作无限制照明系统
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 如何传递多个 std::文件系统选项?
- 遍历顺序由 std::文件系统directory_iterator给出
- C++系统找不到指定的文件错误
- 系统参数信息A 与 SPI_GETMOUSE 返回 0
- libstdc++ 文件系统中未初始化的用法?
- 如何在ECS框架中更新组件数据和通知系统
- boost::文件系统::recursive_directory_iterator多线程安全
- 如果整个应用程序是虚拟映射的,为什么 new 会进行系统调用?
- SFML 碰撞永远不会在我的系统中注册