0

嘿,基本上我希望玩家和狼互相攻击,直到彼此死亡。但是while循环是无限的,所以显然条件不满足。但我看不出我哪里出了问题 if (choice1 == 1) // if 语句在整个游戏中使用,以允许用户通过游戏与选择进行交互。

while((Status.health != 0) && (Wolves.health != 0) )
        {
        int playerAttack = Status.strength + hitPoints() +  Rock.attack;
        cout<< "This is the player attack" << playerAttack;
        Wolves.health = Wolves.health - playerAttack;
        cout << "This is the wolves health" << Wolves.health;
        if (Wolves.health <= 0)
        {
            cout << "\nThe wolves are dead\n ";
        }
        int wolfAttack = Wolves.attack + hitPoints();
        Status.health - wolfAttack;
        if(Status.health <= 0)
        {
            gameOver();
        }// print out of object health.
        }

有人可以帮忙吗?

4

6 回答 6

3

比较:

Wolves.health = Wolves.health - playerAttack;

对比

Status.health - wolfAttack;

注意到有什么不同吗?

于 2012-10-09T18:44:00.913 回答
2

你确定这是正确的:

Status.health - wolfAttack;

这实际上是一个无操作。也许你的意思是:

Status.health -= wolfAttack;
于 2012-10-09T18:44:02.853 回答
2

好吧,我认为健康状况不完全是 0 - 因为您的状况仅查找 != 0 它应该大于 0

while((Status.health > 0) && (Wolves.health > 0)) ...

编辑:也失踪=约翰迪布林首先找到

于 2012-10-09T18:44:47.513 回答
2

在计算机中,某些数字无法表示,例如 0.1,因此如果计算 1 - (0.1 * 10),其结果不等于 0。您只检查了 !=0 和 ==0 条件。试试这个:

=0 或 <=0 如果你的“健康”变量是整数,你给出一个容错,例如:=(0.5) 或 <=(0.5) 等...

于 2012-10-09T19:33:56.400 回答
1

很可能这两个值都不会为零。这听起来很可能,因为你自己使用了这个<=条件。

于 2012-10-09T18:44:23.867 回答
1

我认为你得到了负值,我建议使用

while((Status.health > 0) && (Wolves.health > 0) )
于 2012-10-09T18:44:37.217 回答