Dragon Slayer :)

0

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.

1

Użyj debugera którym przeklikasz kod krok po kroku.

1

Przed if (totalDamage >= 4) { masz jednoznaczne: slaying = false; więc nie rozumiem czemu się dziwisz.

0

Najciemniej pod latarnią.
Dzięki ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1