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

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

本文关键字:语句 数组 随机 Else If 我的 文本 冒险 打印      更新时间:2023-09-26

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

但无论我在代码中运行多少次,控制台日志都会打印出"地精造成了0伤害!"即使地精的atk将玩家的def减至小于0。如果玩家的def小于0,控制台日志应该打印出正确的伤害量。

根据注释,您的随机生成器应该包括下限和上限:

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

评论:

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