龙与地下城 - 能力分数生成

时间:2017-03-04 23:46:01

标签: javascript variables for-loop random

我正在尝试创建一个包含3到18个6个数字的数组变量,生成我们为D& D第5版生成能力分数的方式。 对于那些不熟悉游戏的人来说,概念是滚动6个死亡,并将3个最高结果加起来,以获得3到18之间的能力分数。

我的问题是,即使它应该有3到18之间的范围,它有时会得到0分,而且似乎从未真正高于14 ... 另外,如果我尝试做一个do / while循环直到结果高于17,只是为了检查是否可能,我得到一些24分甚至34分...实际上,我做错了什么?我尝试了很多东西,但它仍然不起作用......如果有人能帮助我,我会非常感激!

这是我目前的代码:

map <what you want to use> :action IntroduceVariable<CR>

2 个答案:

答案 0 :(得分:0)

你可以像这样完成你的目标:

&#13;
&#13;
function sumOfThreeDice() {
    rolls = [0, 0, 0, 0, 0, 0].map((x) => Math.ceil(Math.random() * 6));
    rolls.sort();
    sum = rolls[5] + rolls[4] + rolls[3];
    return sum;
}
console.log(sumOfThreeDice());
&#13;
&#13;
&#13;

我们掷6个骰子,然后通过对数组进行排序来加起来最大的3个。如果您想多次填充数组,可以这样做:

[0, 0, 0, 0, 0, 0].map(sumOfThreeDice);    // generates 6 D&D ability scores

答案 1 :(得分:0)

从先前的评论:

let rolls = [];
let min = 1;
let max = 6;
let numrolls = 6;

for ( let i = 0; i < numrolls; i++ ) {
   // Probably put this in a util function
   rolls.push ( Math.floor ( Math.random () * ( max - min + 1 ) ) + min );
}

rolls = rolls.sort ( ( a, b ) => { return a < b; } );

let result = rolls
    .splice ( 0, 3 )
    .reduce ( ( a, b ) => {  return a + b; } );

console.log ( result );