【发布时间】:2016-02-20 15:49:36
【问题描述】:
我正在构建一个探路者角色生成器,但努力获得足够高的统计数据。所以我想告诉它重新滚动,除非总修正值高于 10。
掷骰子 4 次,最高的三个掷骰相加得出一个统计数据。六个统计数据被提供到一个数组中以供使用。总修饰符的计算方法是将所有六个统计数据相加,减去 60,然后将该数字除以 2。所以我已经得到了这里显示的所有内容。
我假设我现在正在寻找一个 if/else 语句,如果 checkModifier()
编辑:产生相同六个统计数字的代码存在问题。我已经修好了。
function makeDie(sides) {
var die = function () {
return 1 + Math.random() * sides | 0;
};
die.times = function (count) {
var rolls = [];
for(var i = 0 ; i < count ; i++) {
rolls.push(this());
}
return rolls;
};
return die;
}
var rollStat = function () {
var dieRolls = makeDie(5).times(4)
for (a in dieRolls) {
dieRolls[a] += 1;
}
var sortedRolls = dieRolls.sort();
var singleStat = 0;
for (b = 1; b < sortedRolls.length; b++) {
singleStat += sortedRolls[b];
}
return singleStat;
}
var sixStats = function () {
var ss = [];
for (var c = 0; c < 6; c++) {
ss.push(rollStat());
}
return ss;
}
var stats = sixStats();
var stats = stats.sort(function (a, b) {
return a - b;
});
var checkModifier = function() {
var total = 0;
for (var d in stats) {
total += stats[d];
}
return (total-60)/2;
};
【问题讨论】:
-
尚未查看所有代码,但 stats 是一个始终具有相同值的数组,这是预期的行为吗?此外,在 rollStat 函数中,您在 var dieRolls = makeDie(5).times(4); 下有一个循环。什么都不做,这是为什么呢?
-
如果您正在生成“随机”数字,其中最小可接受数字为 10,则只需添加 10。
-
@juvian 它为每个随机数加 1,这样我就得到了一个介于 2 和 6 之间的数字。现在我把它输入了,我意识到可能有更好的方法来做到这一点。至于数组:我已经简化了代码,只是意识到我删除了获取 6 个不同随机数的功能。
-
我在下面编辑了我的解决方案以适应您的更改 - 如果您需要,请告诉我。
标签: javascript if-statement random while-loop