我正在開發一個遊戲的想法。武器可以裝備在你的角色上。不同的武器有不同數量的傷害骰子和重擊骰子。我目前正在使用它,以便程序根據您裝備的武器擲出適量的骰子。骰子游戲 - 需要根據情況擲出更多骰子
然而,儘管裝備的武器是否包含兩個關鍵的模具,該程序只擲出一個關鍵骰子。
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>");
};
您不需要遍歷滾動次數,單個表達式可以爲* n * dices返回有效值。 (雖然它沒有回答你的問題。) – usr2564301
我覺得你應該以這種方式來做這件事。我認爲grep部分是有問題的;我不確定你對此的用法。你爲什麼只在這裏與第一次死亡比較? –
@YannChabot說實話,我不確定。這是我第一次在這樣的細節中使用Javascript。我得到了一些幫助,以達到這個目標,並且它正在工作......我沒有任何理由去改變它。任何幫助表示讚賞。 – user2766423