繁体   English   中英

Discord.js-如何为数组字符串设置值?

[英]Discord.js - How do I set a value to an array string?

我一直在做一个迷你游戏“ BlackJack”命令。 现在,我敢肯定,只需为每个嵌入添加不同的数学生成器即可,如果加法方程等于21,则表明您已经迷路了! 如果我知道如何为“ cards”数组中的每个字符串分配不同的值,我可以自己做所有事情。

例如...黑桃A = 11

然后我就可以使用数学了... randomCard1 + randomCard 2 sorta东西

const { CommandoClient, SQLiteProvider, Command } = require('discord.js-commando');
const { RichEmbed } = require('discord.js');

const client = new CommandoClient({
    commandPrefix: 'w!',
    unknownCommandResponse: false,
    owner: ['254323224089853953', '121222156121014272'],
    disableEveryone: true
});

module.exports = class BlackJackCommand extends Command {
    constructor(client) {
        super(client, {
            name: 'blackjack',
            group: 'ping',
            memberName: 'blackjack',
            description: 'Use w!blackjack [bet] to bet on blackjack! Use w!blackjackhelp to find out more!',
            examples: ['w!blackjack 20'],
            args: [
                {
                    key: 'ping',
                    prompt: 'How much ping do you want to bet?',
                    type: 'integer'
                }
            ]
        });    
    }


    async run(message, args) {

        var responses = Array('Stand','Hit','Double Down')
        var cards = Array('Ace of Clubs','2 of Clubs','3 of Clubs','4 of Clubs','5 of Clubs','6 of Clubs','7 of Clubs','8 of Clubs','9 of Clubs','10 of Clubs','Jack of Clubs','Queen of Clubs','King of Clubs','Ace of Diamonds','2 of Diamonds','3 of Diamonds','4 of Diamonds','5 of Diamonds','6 of Diamonds','7 of Diamonds','8 of Diamonds','9 of Diamonds','10 of Diamonds','Jack of Diamonds','Queen of Diamonds','King of Diamonds','Ace of Hearts','2 of Hearts','3 of Hearts','4 of Hearts','5 of Hearts','6 of Hearts','7 of Hearts','8 of Hearts','9 of Hearts','10 of Hearts','Jack of Hearts','Queen of Hearts','King of Hearts','Ace of Spades','2 of Spades','3 of Spades','4 of Spades','5 of Spades','6 of Spades','7 of Spades','8 of Spades','9 of Spades','10 of Spades','Jack of Spades','Queen of Spades','King of Spades');
        var joker = ('<:joker:415835828770570240>')
        const randomCard1 = cards[Math.floor(Math.random()*cards.length)];
        const randomCard2 = cards[Math.floor(Math.random()*cards.length)];

        const randomDealer = responses[Math.floor(Math.random()*responses.length)];


        const initial = new RichEmbed()
        .setTitle(`**${joker} Blackjack! ${joker}**`)
        .setAuthor(message.author.tag, message.author.displayAvatarURL)
        .setThumbnail('https://pbs.twimg.com/profile_images/1874281601/BlackjackIcon.png')
        .addField('**Initial Deal:**', `Your Cards:\n- ${randomCard1}\n- ${randomCard2}`)
        .setColor(0xAE0086)

        const dealer1 = new RichEmbed()
        .setTitle(`**${joker} Blackjack! ${joker}**`)
        .setAuthor(message.author.tag, message.author.displayAvatarURL)
        .setThumbnail('https://pbs.twimg.com/profile_images/1874281601/BlackjackIcon.png')
        .addField('**Initial Deal:**', `Your Cards:\n- ${randomCard1}\n- ${randomCard2}`)
        .addField('**Dealer\'s Turn 1:**', `Choice: ${randomDealer}`)
        .setColor(0xAE0086)

        message.embed(initial);

        const filter = message => message.content.includes('stand');

        message.reply('Your turn to choose: ``stand`` ``hit`` ``surrender`` ``double down`` ``cancel``')
        .then(function(){
            message.channel.awaitMessages(response => filter, {
              max: 1,
              time: 300000000,
              errors: ['time'],
            })
            .then((collected) => {
                message.embed(dealer1);
              })
              .catch(function(){
                message.channel.send('You didnt respond in time!');
              });
          });
      }
    }

您至少可以采用两种方法。 我要注意的第一件事是,您将一张ace等于11,但是规则允许1或11。

位置

因为此数组的内容遵循一种模式,所以我们可以使用数学方法查看数组中的位置并确定卡的值。 如果index拥有数组偏移量,则可以对其执行以下操作:

  • 将数字的模数乘以13,这会将值从零到12的西服分开
  • 再加上一个,即可得出每套西装中的数字1-13
  • 取最少的那个数目或10来将面部卡片变成10秒
  • 返回并使用该值(如果它是1,也可能是11)

可能看起来像:

value = Math.min((index % 13) + 1, 10)

它涵盖了处理Ace的两个可能值的最后一步以外的所有步骤。

对象

您可以将定义卡片的方式更改为:

var cards = [
    {value: 1, name: 'Ace of Clubs'},
    {value: 2, name: 'Two of Clubs'},
    {value: 3, name: 'Three of Clubs'}
];

并以cards[index].name访问卡的名称,并以cards[index].value的形式访问值,其中index是数组内的偏移量。 请注意,该数组仅用方括号而不是Array(

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM