2015-10-25 104 views
1

我正在試驗一個簡單的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) 

} 

回答

1

您不重新計算循環內的命中/未命中布爾值。所以你要麼總是打或總是錯過。如果你總是錯過,這會導致無限循環。

var youHit = . . .移動到您的while (slaying)循環中。