gpt4 book ai didi

c++ - || while 条件下的运算符(operator)未按预期工作

转载 作者:行者123 更新时间:2023-11-28 05:59:18 27 4
gpt4 key购买 nike

所以我是一名新程序员,我决定尝试制作这款游戏​​。这是一个基本的,比方说人与人的游戏。你输入每个团队的数量,在我的例子中是忍者和武士,然后它随机化每个团队的攻击机会并输出获胜者。每次运行该程序时,我都会输入每种类型的数量,我总是会得到健康值为 0 的忍者和健康值为负的武士的输出。当一个团队的生命值变为 0 时,我如何才能让 while 循环结束?我试过使用 totalNinjaHealth != 0 || totalSamuraiHealth != 0 但程序会无限运行。

#include <iostream>
#include <random>
#include <string>
#include <ctime>

using namespace std;


int main() {

int ninjas;
int NINJA_HEALTH = 2;
int NINJA_ATTACK = 2;

int samurai;
int SAMURAI_HEALTH = 3;
int SAMURAI_ATTACK = 1;

default_random_engine randomGen(time(NULL));
uniform_real_distribution<float> attackChance(0.0f, 1.0f);

cout << " *** Ninjas V Samurai *** " << endl;
cout << "Input amount of Ninjas" << endl;
cin >> ninjas;
cout << "Input amount of Samurai" << endl;
cin >> samurai;

int totalNinjaHealth = NINJA_HEALTH * ninjas;
int totalSamuraiHealth = SAMURAI_HEALTH * samurai;

cout << totalNinjaHealth << endl;

while (totalNinjaHealth > 0 == true || totalSamuraiHealth > 0 == true)
{
if (attackChance(randomGen) > 0.5f) {
totalSamuraiHealth -= NINJA_ATTACK;
cout << totalSamuraiHealth << endl;
}
else if(attackChance(randomGen) < 0.5f) {
totalNinjaHealth -= SAMURAI_ATTACK;
cout << totalNinjaHealth << endl;
}
}
if (totalNinjaHealth == 0) {
cout << "Ninjas lost all " << ninjas << " Ninjas. Samurai remaining " << totalSamuraiHealth << endl;
}
else if (totalSamuraiHealth == 0)
{
cout << "Samurai lost all " << ninjas << " Samurai. Ninjas that remain " << totalNinjaHealth / 2 << endl;
}

cin.get();
cin.get();
return 0;
}

运行时发生的情况的屏幕截图:ConsoleWhenRan我在使用 ||运算符错误?我以为||运算符等到一个条件为真然后停止,但是当我运行代码时它似乎要等到两者都通过或等于 0 给出负输出。

最佳答案

您需要使用 && 运算符。 ||是“或”运算符,当其中一个或两个条件为真时,计算结果为真。在您的情况下,只要您的其中一个团队的健康状况 > 0,while 循环就会继续评估。“和”运算符 (&&) 要求两个条件都为真才能将语句评估为真。

关于c++ - || while 条件下的运算符(operator)未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33584042/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com