在C++游戏中与库存系统作斗争

Struggling with Inventory system on C++ Game

本文关键字:系统 斗争 C++ 游戏      更新时间:2023-10-16

所以我在向项目添加数量时遇到了问题。例如,物品拳头的数量为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。希望这有帮助,任何问题都可以问。