我创建了一个函数,当用某些参数调用时会播放,然后根据数学告诉玩家他们赢了还是死了。我已经测试过这个功能,它正常工作,我在函数调用中设置参数,这样玩家就会赢,并且它会显示胜利消息警报。但是如果我将怪物的健康值增加到第一次调用该函数时玩家不会赢的地方,那么当我尝试用“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