javascript – 如何在文本冒险中的If / Else语句中打印正确的随机数组值?
作者:互联网
我正在尝试进行文本冒险,它将根据特定输入输出正确的控制台日志语句.我想要它,以便如果地精做了足够的攻击伤害,以便玩家的防御小于0,控制台日志将打印出“地精做了”x量的“伤害!”.这是代码顶部的变量列表:
//player stats
var atk= 1;
var def= 1;
var hp= 10;
var mp= 0;
var block= 1;
var magic= 0;
//goblin stats
var gobAtk= [3,4,5];
var gobDef= 1;
var gobHp= 5;
var gobMagDef= 0;
var rand= Math.floor(Math.random()* gobAtk.length);
在我的代码的底部,只要在玩家攻击代码前面部分中的精灵之后,地精的hp(var gobHp)没有降到零,就会调用特定的if / else条件.这里是:
else {
def-=rand;
if(def<0) {
hp-=Math.abs(rand);
console.log("The Goblin did"+ " "+ Math.abs(rand)+ " "+ "Damage!");
if(hp<=0) {
console.log("The Goblin defeated you! You died");
console.log("Game Over.");
}
}
else {
console.log("The Goblin did 0 damage!");
}
}
但无论我执行代码多少次,控制台日志总是打印出来“The Goblin造成0点伤害!”即使小精灵的atk将玩家的def减少到小于0.如果玩家的def小于0,控制台日志应该打印出正确的伤害量.
解决方法:
从评论中,您的随机生成器应包括下限和上限:
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
var rand = getRandomArbitrary(3,5)
评论:
正如另一个(已删除的)答案所述,你应该重新计算每次地精攻击的随机性,否则地精将始终拥有相同的攻击力
标签:javascript,arrays,if-statement,adventure 来源: https://codeday.me/bug/20190702/1357288.html