我創建了一個函數,當用某些參數調用時會播放,然後根據數學告訴玩家他們贏了還是死了。我已經測試過這個功能,它正常工作,我在函數調用中設置參數,這樣玩家就會贏,並且它會顯示勝利消息警報。但是如果我將怪物的健康值增加到第一次調用該函數時玩家不會贏的地方,那麼當我嘗試用「else fight()」(如下所示)設置時,函數不會重複。循環JS函數直到遇到或遇到條件
我的問題是這樣的,如何使用與之前相同的參數循環函數,直到else或else參數滿足?
在調用HTML的功能:
<a class="button" onclick="javascript:fight(8, 5, 1, 10, 3);">Test fight</a><br>
JS功能:
var playerHealth = 100;
function fight(monsterHealth, monsterDmg, monsterArmor, itemDmg, armorSts) {
newPlayerHealth = playerHealth - monsterDmg/armorSts + 2;
newMonsterHealth = monsterHealth - itemDmg/monsterArmor + 2;
if (playerHealth <= 0) {
alert('You died...');
}
else if (newMonsterHealth <= 0) {
alert('You won!');
}
else
{
var newPlayerHealth = playerHealth;
fight(newMonsterHealth, monsterDmg, monsterArmor, itemDmg, armorSts);
}
}
編輯:更新的功能,它說你贏了,無論怪物的傷害或健康有多高。
你如果條件永遠不會爲真:playerHealth = 100讓你的播放器可以永遠不死。另外,當函數在else中調用自身時,是不是隻傳遞完全相同的值? – nnnnnn
您需要將該功能中的「損壞」邏輯抽象出來,並在每次需要「打」時調用它,這就是我認爲 – Frondor
感謝您的評論,我現在將根據您所說的進行一些測試。 – Timble