В общем, я хочу, чтобы и игрок, и волки атаковали друг друга, пока друг друга не погибли. Но цикл 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
пока ((Status.health> 0) && (Wolves.health> 0))
…
редактировать: также пропавших без вести = Джон Диблинг найден первым
Для сравнения:
Wolves.health = Wolves.health - playerAttack;
против
Status.health - wolfAttack;
Заметили разницу?
Вы уверены, что это правильно?
Status.health - wolfAttack;
Это на самом деле не операция. Возможно, вы имели в виду:
Status.health -= wolfAttack;
в компьютере некоторые числа не могут быть представлены, например, 0,1, поэтому, если вы вычислите 1 — (0,1 * 10), его результат не будет равен нулю. Вы проверили только условие! = 0 и == 0. Попробуй это:
= 0 или <= 0 также, если ваша переменная «здоровье» является целым числом, вы даете погрешность, такую как:
= (0,5) или <= (0.5) и т. Д.
Скорее всего, оба значения никогда не равны нулю. Это звучит правдоподобно, потому что вы сами используете <=
состояние.
Я думаю, что вы получаете отрицательные значения, я рекомендую использовать
while((Status.health > 0) && (Wolves.health > 0) )