javascript - 循环 JS 函数直到满足 if or else 条件

标签 javascript

我创建了一个函数,当使用某些参数调用时,该函数将发挥作用,然后根据数学结果告诉玩家他们获胜或死亡。我已经测试了该函数并且它可以正常工作,我在函数调用中设置了参数,以便玩家获胜并显示获胜消息警报。但是,如果我将怪物的生命值增加到玩家第一次调用该函数时不会获胜的程度,则该函数将不会重复自身,就像我尝试使用“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/

相关文章:

javascript - 为什么页面跳转链接在 IE 中有效,但在 Mozilla 中无效?

javascript - 数据库表过滤

javascript - 为什么 element.style 在 JS 中总是返回空?

javascript - 禁用 iPhone "save image"弹出窗口

javascript - 如何在单击时获取 nodeList/HTML 集合中元素的索引

javascript - React JS 不适用于 Internet Explorer 9

javascript - Phonegap 互操作能力

javascript - react 事件监听器, throttle 未被删除

javascript - 用js在div里面插入 Canvas

javascript - 存储用户 session : node. js、express、mongoose-auth