Я экспериментирую с простой игрой в JavaScript, которая перебирает «хиты» на драконе, пока дракон не будет убит.Бесконечная петля на простой игре
Игра работает хорошо, однако если результат - это промах, то есть youHit = 0
, тогда скрипт застревает в бесконечном цикле. Я знаю, что бесконечный цикл вызван заключительным заявлением else, где slaying = true
(если false, то игра останавливается, и скрипт должен запускаться снова). Мой вопрос в том, как я могу прокручивать пропуски и удары без застревания в бесконечном цикле.
var slaying = true
var youHit = Math.floor(Math.random() * 2)
var damageThisRound = Math.floor(Math.random() * 5 + 1)
var totalDamage = 0
var health = 4
while(slaying) {
if (youHit) {
totalDamage += damageThisRound
console.log("You hit for " + totalDamage + " damage");
if (health <= 0) {
console.log('You slayed the dragon!')
slaying = false;
} else {
health -= totalDamage
if (health <= 0) {
slaying = false;
console.log('You slayed the dragon!')
}
else {
slaying = true;
}
}
} else {
console.log("You missed!");
slaying = true;
}
console.log('Health: ' + health)
}