所以我使用Node.js为我的服务器开发了一段Discord bot几天,对JS来说是全新的。我试图将一个魔术8球的一些代码转换成一个教程模型完成JS到实现作为一个函数(只是随机数和案例切换)。
这是来自C#项目:
switch (random.Next(4))
{
case 0:
Console.WriteLine("YES");
speechSynthesizer.Speak("Yes");
break;
case 1:
Console.WriteLine("NO");
speechSynthesizer.Speak("No");
break;
case 2:
Console.WriteLine("HELL NO");
speechSynthesizer.Speak("Hell no");
break;
case 3:
speechSynthesizer.Speak("Hell yes");
Console.WriteLine("HELL YES");
break;
}
这就是我想要实现的目标:
switch( Math.random.Next(4)) {
case 0:
msg.channel.send('Yes');
break;
case 1:
msg.channel.send('No');
break;
case 2:
msg.channel.send('Hell yes!');
break;
case 3:
msg.channel.send('Hell No!');
break;
}
我基本上是想添加一个可以发送“Magic 8 Ball”的部分,它会返回Yes / No / Hell Yes / Hell No.。
编辑: 所以我遵循了评论的建议,并在每个实例中将“case”切换为全部小写。我现在收到的错误是数学未定义。另一篇文章建议将数学转换为数学。接下来不是一个功能。
答案 0 :(得分:0)
如果你的问题是在你的交换机中生成一个随机的int,你首先需要知道如何生成伪随机int。
Math.random
生成一个范围为[0,1)
因此,您需要获取该值,将其乘以最大值,然后将其置于最小值。
Math.floor(Math.random() * max)
您的最终代码如下所示:
switch(Math.floor(Math.random() * 4))) { // 4 is maximum n of options
case 0:
msg.channel.send('Yes');
break;
case 1:
msg.channel.send('No');
break;
case 2:
msg.channel.send('Hell yes!');
break;
case 3:
msg.channel.send('Hell No!');
break;
}