编程语言
首页 > 编程语言> > javascript – 如何在文本冒险中的If / Else语句中打印正确的随机数组值?

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