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

コンピューターでは、たとえば 0.1 などの一部の数値を表すことができないため、1 - (0.1 * 10) を計算すると、その結果はゼロに等しくなりません。!=0 と ==0 の条件のみをチェックしました。これを試して:

=0 または <=0 また、「ヘルス」変数が整数の場合、=(0.5) または <=(0.5) などのエラー許容値を指定します...

于 2012-10-09T19:33:56.400 に答える
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 に答える
1

ほとんどの場合、両方の値がゼロになることはありません。あなた自身が<=条件を使用しているため、それは可能性が高いように思えます。

于 2012-10-09T18:44:23.867 に答える
1

負の値を取得していると思います。使用することをお勧めします

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