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

时间:2015-05-08 20:52:00

标签: javascript jquery html

我正在开发一个游戏创意。你的角色可以配备武器。不同的武器有不同数量的伤害骰子和致命击中骰子。我现在正在工作,以便程序根据你装备的武器掷出适当数量的骰子。

然而,该程序只会滚动一个关键骰子,尽管装备的武器是否包含两个关键的掷骰子。

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>");
};

1 个答案:

答案 0 :(得分:1)

你的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>");
  }
}

很抱歉双重帖子,是在一个废弃的帐户上。