Javascript 如何在文本中的If/Else语句中打印正确的随机数组值?

Javascript 如何在文本中的If/Else语句中打印正确的随机数组值?,javascript,arrays,if-statement,adventure,Javascript,Arrays,If Statement,Adventure,我正在尝试制作一个文本冒险,它将根据特定的输入输出正确的控制台日志语句。我希望这样,如果小妖精造成足够的攻击伤害,使玩家的防御低于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; v

我正在尝试制作一个文本冒险,它将根据特定的输入输出正确的控制台日志语句。我希望这样,如果小妖精造成足够的攻击伤害,使玩家的防御低于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!");
        }
}
else{
def-=兰特;

如果(def与注释相同,则随机生成器应包括下限和上限:

function getRandomArbitrary(min, max) {
   return Math.random() * (max - min) + min;
}
var rand = getRandomArbitrary(3,5)
评论:


正如另一个(已删除)答案所述,您应该重新计算小妖精每次攻击时的随机数,否则小妖精将始终具有相同的攻击力
打印输出然后
def
从来都不是
<0
看看这个,在上下限之间生成随机数,因为你的
rand
是0还是1?
1-1=0
。0不是<0
数学。random()
生成一个(浮点)0到1之间的值,该值与数组长度相乘。地板将对此进行四舍五入。