Witam, przerabiam sobie kurs javascript na codeacademy. W zadaniu o dragon slayerze mój kod wygląda następująco:
var slaying = true;
var youHit = Math.floor(Math.random() * 2);
var damageThisRound = Math.floor(Math.random() * 5 + 1);
var totalDamage = 0;
while(slaying) {
if(youHit) {
console.log("You hit!");
console.log("You hit: " + youHit);
totalDamage += damageThisRound;
console.log("Total damage: " + totalDamage);
slaying = false;
if (totalDamage >= 4) {
console.log("DRAGON IS DEAD");
slaying = false;
}
else
{
console.log("Total damage: " + totalDamage);
youHit = Math.floor(Math.random() * 2);
}
}
else {
console.log("YOU ARE DEAD!");
console.log(youHit);
slaying = false;
}
slaying = false;
}
W przypadkach, kiedy zmienna totalDamage jest mniejsza niż 4, kod powinien włączać pętlę od początku do czasu, aż:
- totalDamage będzie większe lub równe 4 - i drukować info DRAGON IS DEAD;
- kolejne uderzenie (youHit) wyniesie 0 - i wtedy drukowana powinna być informacja YOU ARE DEAD!;
Tymczasem, kiedy wspomniana zmienna jest mniejsza niż 4, drukuje coś takiego:
You hit!
You hit: 1
Total damage: 3
false
Nie mogę dojść, czemu w takich przypadkach pętla nie kończy się żadną z dwóch podanych wcześniej możliwości wraz z odpowiednią informacją. Proszę o wytłumaczenie dlaczego tak się dzieje i jak to ewentualnie naprawić.
Pozdro.