В то время как условие цикла не работает

В общем, я хочу, чтобы и игрок, и волки атаковали друг друга, пока друг друга не погибли. Но цикл 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.
}

Кто-нибудь может помочь?

0

Решение

Ну, я думаю, что здоровье не было точным 0 — потому что ваше состояние выглядит только для! = 0
должно быть больше 0

пока ((Status.health> 0) && (Wolves.health> 0))

редактировать: также пропавших без вести = Джон Диблинг найден первым

2

Другие решения

Для сравнения:

Wolves.health = Wolves.health - playerAttack;

против

Status.health - wolfAttack;

Заметили разницу?

3

Вы уверены, что это правильно?

Status.health - wolfAttack;

Это на самом деле не операция. Возможно, вы имели в виду:

Status.health -= wolfAttack;
2

в компьютере некоторые числа не могут быть представлены, например, 0,1, поэтому, если вы вычислите 1 — (0,1 * 10), его результат не будет равен нулю. Вы проверили только условие! = 0 и == 0. Попробуй это:

= 0 или <= 0 также, если ваша переменная «здоровье» является целым числом, вы даете погрешность, такую ​​как:
= (0,5) или <= (0.5) и т. Д.

2

Скорее всего, оба значения никогда не равны нулю. Это звучит правдоподобно, потому что вы сами используете <= состояние.

1

Я думаю, что вы получаете отрицательные значения, я рекомендую использовать

while((Status.health > 0) && (Wolves.health > 0) )
1
По вопросам рекламы [email protected]