我创建了一个函数,当使用某些参数调用时,该函数将发挥作用,然后根据数学结果告诉玩家他们获胜或死亡。我已经测试了该函数并且它可以正常工作,我在函数调用中设置了参数,以便玩家获胜并显示获胜消息警报。但是,如果我将怪物的生命值增加到玩家第一次调用该函数时不会获胜的程度,则该函数将不会重复自身,就像我尝试使用“else Fight()”进行设置(如下所示)。
我的问题是,如何使用与之前相同的参数循环该函数,直到满足 else 或 else if 参数?
在 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。
newMonsterHealth
也没有被持久化。
<html>
<head>
<script>
var playerHealth = 100;
function fight(monsterHealth, monsterDmg, monsterArmor, itemDmg, armorSts) {
playerHealth = playerHealth - Math.floor(monsterDmg / armorSts) ;
console.log("player helath"+playerHealth);
monsterHealth = monsterHealth - Math.floor(itemDmg / monsterArmor) ;
console.log("monster helath"+monsterHealth);
if (playerHealth <= 0) {
alert('You died...');
}
else if (monsterHealth <= 0) {
alert('You won!');
}
else fight(monsterHealth, monsterDmg, monsterArmor, itemDmg, armorSts);
}
</script>
</head>
<body>
<a class="button" onclick="javascript:fight(100, 40, 1, 10, 3);">Test fight</a><br>
</body>
</html>
附注我删除了你的 +2 逻辑(我不明白你为什么要添加)
关于javascript - 循环 JS 函数直到满足 if or else 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35238653/