C++如果元素等于 X 则为数组赋值

C++ assigning value to array if element is equal to X

本文关键字:数组 赋值 如果 元素 C++      更新时间:2023-10-16

我是C++新手,我一直在尝试制作一个简单的游戏。我想要一个玩家可以应用于敌人的状态效果系统,所以我制作了一个可以容纳 5 个元素的字符串数组,比如"燃烧"或"中毒"等。然而,当我对此进行测试时,它似乎总是将状态效果(在本例中为刻录(应用于第一个和第二个状态"插槽"。我希望它仅适用于我的第一个空插槽。我把这部分代码拿出来,从for循环扩展到if语句,这次我输出了statusEffect的值,它给了我0x1000020f0。我甚至不知道那是什么。

这是我的代码,如果有帮助,我正在研究 Xcode。

int statusEffectDuration[5] = {0, 0, 0, 0, 0};
string statusEffect[5] = {"NONE", "NONE", "NONE", "NONE", "NONE"};
// Function for applying status effects
void applyStatusEffect(string appliedEffect, int statusDuration) {
if (statusEffect[0] == "NONE") { // If first status effect is nothing then changes first status to "EFFECT"
statusEffect[0] = appliedEffect;
statusEffectDuration[0] = statusDuration;
}
else if (statusEffect[1] == "NONE") { // Same as first, but if second status is nothing then changes second status to "EFFECT"
statusEffect[1] = appliedEffect;
statusEffectDuration[1] = statusDuration;
}
else if (statusEffect[2] == "NONE") { // Third
statusEffect[2] = appliedEffect;
statusEffectDuration[2] = statusDuration;
}
else if (statusEffect[3] == "NONE") { // Fourth
statusEffect[3] = appliedEffect;
statusEffectDuration[3] = statusDuration;
}
else if (statusEffect[4] == "NONE") { // Fifth
statusEffect[4] = appliedEffect;
statusEffectDuration[4] = statusDuration;
}
else if (statusEffect[5] == "NONE") { // Sixth
statusEffect[5] = appliedEffect;
statusEffectDuration[5] = statusDuration;
}
}
int main() {
applyStatusEffect("EFFECT", 5); // "EFFECT" is the effect that is given, 5 is duration of effect
// Displays status effect and effect duration
cout << statusEffect; // Displays 0x1000020f0
cout << "n";
cout << statusEffectDuration; // Displays 0x1000020f0
return 0;
}

编辑:我很笨。我正在打印地址。但是它为前两个空白区域而不是一个空格提供值的问题就是我发布此内容的最初原因。

您正在告诉计算机打印数组的地址。
要打印数组的内容,您需要使用循环:

for (i = 0; i < 5; ++i)
{
cout << statusEffect[i] << "n";
}