如何在while循环中测试多个数组以查看它们的下标值是否不等于某个值?
当数组中的所有下标都等于0时,我还需要将数组分开以结束循环。这是我认为可行的,但事实并非如此。
while(
(pl_health[0] !=0 && pl_health[1] !=0 && pl_health[2] !=0 &&
pl_health[3] !=0 && pl_health[4] !=0 && pl_health[5] !=0) ||
(enemy[0].health !=0 && enemy[1].health !=0 && enemy[2].health !=0 &&
enemy[3].health !=0 && enemy[4].health !=0 && enemy[5].health !=0)
)
如您所见,我尝试使用paranthesese和or运算符分隔2个数组。程序运行没有错误,但循环甚至没有迭代一次。即使某些下标不等于0。
答案 0 :(得分:0)
问题是你应该切换条件,最有可能(取决于你想要做什么)。其中一位评论者指出,只有在每个玩家都有健康或每个敌人都有健康的情况下,你的逻辑才会进行。"我完整地留下了答案的另一部分,因为它仍然是相关的。这是我认为表达你想要的条件的while循环。
while(
(pl_health[0] !=0 || pl_health[1] !=0 || pl_health[2] !=0 ||
pl_health[3] !=0 || pl_health[4] !=0 || pl_health[5] !=0) &&
(enemy[0].health !=0 || enemy[1].health !=0 || enemy[2].health !=0 ||
enemy[3].health !=0 || enemy[4].health !=0 || enemy[5].health !=0)
)
在这种条件下进行如此多检查的while循环不是这里的方法。更好的方法可能是:
bool playerAlive = true, enemyAlive = true;
while (playerAlive && enemyAlive) {
// game logic etc
playerAlive = false;
enemyAlive = false;
for (int i=0; i<6; i++) {
if (pl_health[i] != 0) {
playerAlive = true;
}
if (enemy[i].health != 0) {
enemyAlive = true;
}
}
}
请注意,存储健康的数组方法可能只适用于简单/小型游戏。当然,你可能想要删除魔法&#34; 6&#34;来自for循环并使它成为常数。