如何将“库存[0]”实施到If-Else语句中

时间:2017-06-10 15:12:44

标签: c++ if-statement

所以我正在尝试为我的C ++类制作一个基于文本的游戏,并且似乎无法弄清楚如果以前收集的项目为了故事,if-else语句只能执行有意义。如果该项目不在库存中,则玩家的选项将再次循环,以便他们选择不同的选项。我尝试过:else if(input6 == "rub" || inventory[0] == "Purple Fruit")但是无论玩家是否拥有该项目,它都会执行该语句。谢谢你的时间!!我的意思是。

do {
    cout <<"You gotta start doing something quick before the swelling gets worse" <<endl;
    cout <<"Options are: \"rub\" the random substances oozing from your purple fruit onto your swelling neck, \"keep\" following the tracks until you could get help from the humans if those tracks actually belong to a human, or \"look\" around for anything to help cure your swelling neck\""<<endl;
    cin >>input6;

    if (input6 == "keep")
    {
        cout << "" <<endl;
        return 0;
    }

    else if (input6 == "look")
    {
        cout <<"Good luck" <<endl;
    }

    else if (input6 == "rub" || inventory[0] == "Purple Fruit")
    {
        cout << ".." <<endl;
        return 0;
    }

} while (input6 != "grab");

cout <<"Out"<<endl;
inventory[1] = "Pink Sap";
cout<< inventory[1] <<endl;

3 个答案:

答案 0 :(得分:0)

您不能使用&#34; =&#34;来比较字符串。您需要使用strcmp函数来比较字符串。

答案 1 :(得分:0)

如果您需要&#34;紫色水果&#34;

else if (input6 == "rub" || inventory[0] == "Purple Fruit")应该是else if (input6 == "rub" && inventory[0] == "Purple Fruit")。在用户的第一个库存槽中,以便使用&#34; rub&#34;命令。你应该添加另一个处理&#34; rub&#34;如果用户没有&#34; Purple Fruit&#34;在他们的库存中也是如此。考虑这样的事情:

else if (input6 == "rub")
{
    if(inventory[0] == "Purple Fruit")
    {
        // user has item
    }
    else
    {
        // user does not have item
    }
}

另外,请注意使用某种&#34; set&#34;类,如std::set,它允许您拥有可以按名称查询的无序库存项目集合,而不必担心项目占用的库存位置。

例如,使用std::set::find,您可以测试项目是否在您的广告资源中,如下所示:

// assume inventory is std::set<std::string> and is already initalized and populated
if(inventory.find("Purple Fruit") != inventory.end())
{
    // item is in the inventory
}
else 
{
    // item is not in the inventory
}

答案 2 :(得分:0)

这不符合你的想法:

if (input6 == "keep")

假设input6被定义为char的数组并且足够大以容纳给定的输入,那么您正在做的是比较数组的地址input6(因为数组衰减到指向大多数上下文中第一个元素的指针)和字符串常量"keep"的地址。这总是评估为假。

要比较字符串的内容,请使用strcmp函数:

if (strcmp(input6, "keep") == 0)

如果两个操作数都包含相同的以空字符结尾的字符串,则此函数返回0.