虽然循环条件不起作用

时间:2012-10-09 18:41:53

标签: c++ while-loop text-based

嘿,基本上我希望玩家和狼都互相攻击,直到彼此都死了。但是while循环是无限的,所以显然条件不满足。但我无法看到我在哪里出错了如果(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.
        }

有人可以帮忙吗?

6 个答案:

答案 0 :(得分:3)

比较

Wolves.health = Wolves.health - playerAttack;

VS

Status.health - wolfAttack;

注意有什么不同吗?

答案 1 :(得分:2)

您确定这是正确的:

Status.health - wolfAttack;

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

Status.health -= wolfAttack;

答案 2 :(得分:2)

嗯,我认为健康状况并不完全是0 - 因为你的情况只适用于!= 0 它应该大于0

while((Status.health&gt; 0)&amp;&amp;(Wolves.health&gt; 0)) ...

编辑:还缺少= John Dibling先发现

答案 3 :(得分:2)

计算机中的某些数字不能表示为0.1,所以如果计算1 - (0.1 * 10),其结果不等于零。您只检查了!= 0和== 0条件。试试这个:

  

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

我认为你的价值是负值,我建议使用

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