javascript - 骰子游戏 - 需要根据情况掷更多骰子

标签 javascript jquery html

我正在开发一个游戏创意。武器可以装备在你的 Angular 色上。不同的武器有不同数量的伤害骰子和暴击骰子。我目前正在运行它,以便程序根据您装备的武器掷出适当数量的骰子。

但是,无论装备的武器是否包含两个关键骰子,该程序都只会掷出一个关键骰子。

var WepEquipped = { "name": "Broken Sword", "attack_dice": "2", "critical_dice": "1", "min_base_dmg": "2", "max_base_dmg": "12", "max_total_dmg": "24", "weapon_type": "Slash" };

function Attack(rolls) {
var total = 0;
var dice = [];

for (var i = 1; i <= rolls; i++) {
    var d6 = Math.floor((Math.random() * 6) + 1);
    $("#dice_container").append("<div class='die_roll'><p class='atk-roll'>" + d6 + "</p></div>");
    dice.push(d6);
    total += d6;
}

// Needs to be able to roll for multiple critical dice
if ($.grep(dice, function (elem) {
    return elem === dice[0];
    }).length == rolls) {
        var d12 = Math.floor((Math.random() * 12) + 1);
        total += d12;
        $("#dice_container").append("<div class='die_roll'><p id='crit-roll'>" + d12 + "</p></div>");
    }
    $("#attack").html("<div>You attack for " + total + "</div>");
};

$('#attack_button').off('click').on('click', function(){
    $('.die_roll').hide();
    Attack(WepEquipped.attack_dice);
    // Attack(WepEquipped.attack_dice);
});

我可以解释更多,但我希望这些代码足以理解我的要求。这里需要改变一些东西,但我不知道是什么:

// Needs to be able to roll for multiple critical dice
if ($.grep(dice, function (elem) {
return elem === dice[0];
}).length == rolls) {
    var d12 = Math.floor((Math.random() * 12) + 1);
    total += d12;
    $("#dice_container").append("<div class='die_roll'><p id='crit-roll'>" + d12 + "</p></div>");
}
$("#attack").html("<div>You attack for " + total + "</div>");
};

最佳答案

您的 grep 返回骰子数组中等于您第一次掷骰子的元素数量,并且该数组的长度等于您掷出一次关键骰子的掷骰数。

if ($.grep(dice, function (elem) {
    return elem === dice[0];
    }).length == rolls) {
        var d12 = Math.floor((Math.random() * 12) + 1);
        total += d12;
        $("#dice_container").append("<div class='die_roll'><p id='crit-roll'>" + d12 + "</p></div>");
    }
    $("#attack").html("<div>You attack for " + total + "</div>");
};

如果您尝试滚动与 grep 返回的次数一样多的次数,则需要这样的东西。

var crits = $.grep(dice, function (elem) {return elem === dice[0];});
if( crits.length  == rolls ){
  for( var x=0;x<crits.length;x++){
     var d12 = Math.floor((Math.random() * 12) + 1);
     total += d12;
     $("#dice_container").append("<div class='die_roll'><p id='crit-roll'>" + d12 + "</p></div>");
  }
}

很抱歉重复发帖,该帐户已被废弃。

关于javascript - 骰子游戏 - 需要根据情况掷更多骰子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30132667/

相关文章:

javascript - 使用 Webpack 编译 SASS 文件

javascript - 如何使左侧 div 可以使用空格键或向下箭头滚动而无需先单击?

javascript - 如何检测 v8 堆使用量接近 Node.js 中的限制

javascript - JS 或 jQuery 逐字符比较两个文本

javascript - 如何制作一个从 02 :00 reaches 00:00 and then restarts at 06:00 开始的计时器

javascript - Ember.js:回调函数中的 this._super

javascript - 通过 HTML onkeypress 限制某些字符的输入

javascript - 使用 spring MVC 将动态数据添加到可搜索的多选 jquery

javascript - 在客户端用 JavaScript 逐行读取文件

html - 如果我设置图像的高度和宽度,加载时间会减少吗