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

How Do I Print Correct Random Array Value Within If/Else Statement in my Text Adventure?

我正在尝试制作一个文本冒险游戏,它将根据特定的输入输出正确的控制台日志语句。我想要这样,如果地精造成足够的攻击伤害,使玩家的防御小于 0,那么控制台日志将打印出 "The Goblin did" x "damage!" 的数量。这是代码顶部的变量列表:

//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);

在我的代码底部,只要玩家在代码的前面部分攻击地精后地精的生命值 (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 did 0 damage!"即使地精的攻击减去玩家的防御小于0。如果玩家的防御是小于 0 控制台日志应该打印出正确的损坏量。

根据评论,您的随机生成器应包括下限和上限:

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

评论:

如另一个(已删除)答案所述,您应该重新计算地精每次攻击的随机数,否则地精将始终具有相同的攻击力