gpt4 book ai didi

javascript - 掷多个骰子并保留最好的 3 个

转载 作者:行者123 更新时间:2023-11-29 18:09:04 27 4
gpt4 key购买 nike

我正在开发一个可以掷 3 个或更多骰子的掷骰器。

我需要做的是无论掷多少个骰子都只保留 3 个最好的骰子。这是我到目前为止所拥有的:(有一个下拉框让玩家选择掷骰子的数量,这就是 diceMethod.selectedIndex 的用途)

function roll3d6() {
d1=Math.floor(Math.random() * 6) + 1;
d2=Math.floor(Math.random() * 6) + 1;
d3=Math.floor(Math.random() * 6) + 1;
return d1 + d2 + d3;
}

function roll4d6() {
d1=Math.floor(Math.random() * 6) + 1;
d2=Math.floor(Math.random() * 6) + 1;
d3=Math.floor(Math.random() * 6) + 1;
d4=Math.floor(Math.random() * 6) + 1;
if ((d4<=d3)&(d4<=d2)&(d4<=d1)) { return d1 + d2 + d3; }
else if ((d3<=d4)&(d3<=d2)&(d3<=d1)) { return d1 + d2 + d4; }
else if ((d2<=d4)&(d2<=d3)&(d2<=d1)) { return d1 + d3 + d4; }
else { return d2 + d3 + d4; }
}

function roll5d6() {
d1=Math.floor(Math.random() * 6) + 1;
d2=Math.floor(Math.random() * 6) + 1;
d3=Math.floor(Math.random() * 6) + 1;
d4=Math.floor(Math.random() * 6) + 1;
d5=Math.floor(Math.random() * 6) + 1;
if () {
// Run check here
}
}

function RollTheDice(){
// roll 3d6
if (document.form1.diceMethod.selectedIndex === 0) {
score1=roll3d6();
}
// roll 4d6 best 3
if (document.form1.diceMethod.selectedIndex === 1) {
score1=roll4d6();
}
// roll 5d6 best 3
if (document.form1.diceMethod.selectedIndex === 2) {
score1=roll5d6();
}
}

我的 roll4d6 运行良好,但如果可能的话,我想缩短它,我希望有一种简化的掷骰子方法,所以如果我在掷骰子中添加更多骰子,我会必须向骰子检查添加更多代码。

最佳答案

您可以使用以下通用函数:

function roll(n) {
var a = Array(n);
for (var i = 0; i < n; i++)
a[i] = Math.floor(Math.random() * 6) + 1;
a = a.sort().slice(n - 3, n);
return a[0] + a[1] + a[2];
}

其中 n 是我们要掷的骰子数。有了这个功能:

  • 我们为我们的骰子生成所有随机数。
  • 我们对它们进行分类。
  • 我们取最后三个元素,它们必须是最大值。
  • 我们退还他们的款项。

关于javascript - 掷多个骰子并保留最好的 3 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29129724/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com