硬币翻转指令

Posted

技术标签:

【中文标题】硬币翻转指令【英文标题】:Coin flip command 【发布时间】:2018-12-30 12:08:45 【问题描述】:

我昨天开始编写我的第一个 Discord 机器人,已经有一个掷骰子命令,现在想要一个掷硬币命令。

我将如何编码?

使用 Node.JS 和 Discord.JS 库。

【问题讨论】:

你让它生成一个介于 0 和 1 之间的随机数。如果它是 0,它是头部,如果它是 1,它是尾部。 【参考方案1】:
if(command == "ht")

      function doRandHT() 
var rand = ['HEADS!','TAILS!'];

return rand[Math.floor(Math.random()*rand.length)];


 const embed = 
"title": `Here is the winner!`,
"description": doRandHT(),
"color": 7584788,
;
message.channel.send( embed );


;

您可以对 Discord.js 中的每个随机命令使用这个普通命令

警告:您可能需要对代码进行更改才能使其正常工作。有些使用不同的命令结构,不要指望它只是粘贴就可以工作。进行更改,查看您的其他命令并根据它们进行更改。

这是经过全面测试的随机命令。

【讨论】:

【参考方案2】:

在您的命令中,您可以使用它来生成一个随机数(01):Math.random() 为您提供一个介于 0 和 1 之间的数字(排除),而 Math.round() 将该数字四舍五入为 0或 1.

Math.round(Math.random()); //O or 1

然后您可以使用该号码在频道中发送正面或反面。

【讨论】:

【参考方案3】:

如果您对 javascript 不了解,请转至Mozilla Developer Network (MDN)

如果您想了解有关 Discord.js 库的信息,请转至 the Discord.js Documentation 并使用右上角的搜索栏。

    const Discord = require('discord.js');
    const bot = new Discord.Client(
      disableEveryone: true
    );

    //The 'message' event, emitted whenever somebody says something in a text channel
    bot.on('message', async koolMessage => 
      if (koolMessage.content.startsWith("coinflip")) 
        //If the message's content starts with "coinflip" run the following:
        let outcomes = ["Heads", "Tails"];
        //An array that has the possible outcomes from flipping a coin, heads and tails
        let outcomesIndex = Math.round(Math.random() * outcomes.length);
        //This will be what index of the outcomes array should be selected (arrays start at 0)
        //Math.round() rounds the parameter inside, in this case, Math.random()
        koolMessage.channel.send(outcomes[outcomesIndex]);
        //'koolMessage' is what we decided to call the message in the 'message' event, above. It can be called whatever you'd like
        //'channel' is the text channel in which 'koolMessage' was sent
        //The send() function sends a message with the included argument (e.g. send("hello there!")). It must be sent in a channel, in this case, the channel in which the 'koolMessage' from the user was sent
        //If we would have outcomes[0], the output would be "Heads", if we would have outcomes[1] the output would be "Tails", so we randomize it, giving us either outcomes[0] or outcomes[1]
      
    );

    bot.login('YOUR TOKEN');

【讨论】:

这个代码是不可执行的,你不应该使用sn-p代码。相反,请使用代码示例,就像我在您删除的编辑中使用的那样。

以上是关于硬币翻转指令的主要内容,如果未能解决你的问题,请参考以下文章

luogu P1146 硬币翻转

洛谷——P2708 硬币翻转

洛谷——P2708 硬币翻转

如何模拟有偏硬币的翻转?

位操作:更难翻转硬币

P1146 硬币翻转