JavaScript-Blackjack多平台创建+;洗牌

JavaScript-Blackjack多平台创建+;洗牌,javascript,Javascript,我已经设置了一个变量num_decks(这是用户想要的组数),我将其传递到函数createDecks()。问题是,我不知道如何让函数自己创建对象,因为我没有设置类。我只有两个工作函数,分别是getDeck()和shuffle(deck),它们创建一个有序的deck,并继续将其洗牌1000次 TL;DR底线,我可以继续使用函数吗?如果没有,那么有没有办法挽救代码,这样它就可以创建多个数据组实例,然后将它们洗牌?如果是,那怎么办 我没有太多的面向对象编程经验,主要是过程性的,因此有很多函数 代码:

我已经设置了一个变量
num_decks
(这是用户想要的组数),我将其传递到函数
createDecks()
。问题是,我不知道如何让函数自己创建对象,因为我没有设置类。我只有两个工作函数,分别是
getDeck()
shuffle(deck)
,它们创建一个有序的deck,并继续将其洗牌1000次


TL;DR底线,我可以继续使用函数吗?如果没有,那么有没有办法挽救代码,这样它就可以创建多个数据组实例,然后将它们洗牌?如果是,那怎么办

我没有太多的面向对象编程经验,主要是过程性的,因此有很多函数

代码:

//任意数字,用户可以选择任意一个。六是标准的。从技术上讲,是在一个不同的函数中,但我把它放在这里只是因为。
const num_decks=6;
函数getDeck(){
var deck=新数组();
对于(变量i=0;i<0.length;i++){
对于(变量i=0;x
请告诉我这是否适合您,或者您是否不了解我对您的代码所做的一些小更改

const num_decks=6;
康斯特西服=[‘黑桃’、‘红桃’、‘俱乐部’、‘钻石’]
常量值=['2'、'3'、'4'、'5'、'6'、'7'、'8'、'9'、'10'、'jack'、'queen'、'king'、'ace']
var=[];
for(设i=0;i}
类只不过是对象的蓝图。您可以创建一个类,然后使用它构建对象,也可以像使用对象文字一样单独创建对象。我使用一个对象文字创建了一个快速函数,用于为x个牌组创建牌。因为您只在一个地方创建它,所以不需要类

num_decks=6;
函数createDecks(num_decks){
让西装=[‘钻石’、‘红桃’、‘黑桃’、‘梅花’],等级=[‘A’、‘2’、‘3’、‘4’、‘5’、‘6’、‘7’、‘8’、‘9’、‘10’、‘杰克’、‘皇后’、‘国王’],德卡尔=[];

对于(让i=0;iYes,你完全可以不用类来完成这项工作。如果你想自己编写这些代码,请随意,但是有很多扑克牌库和21点库存在,这可以为你节省很多工作。我一直在试图找到这些库,你能提供我的名字吗?我肯定有很多,这里有3个在我的boo中kmarks:,非常感谢!我想我被困在这个问题上了,因为我的大脑一直在思考解决这个问题的唯一方法是创建一个类,所以我甚至没有考虑其他选项,因为我太专注于lol。是的,这很有效。我看到在
mergedeck
选项中有两个
for
循环,一个迭代
num\u deck
,另一张超过52张卡,或者仅仅是一整副卡本身。我只是好奇它如何仍然能够维护/保持每张卡的
套装
,即使它没有在函数中直接提到。我是否误读了代码或其他什么?接受答案,我会告诉你它是如何做到的!我已经有一个答案了接受另一个答案…你可以随时改变它是的,但我觉得另一个更全面
//arbitrary number, user can pick whichever one they want. Six is standard though. Technically inside a different function, but I placed it here just because.
const num_decks = 6;

function getDeck() {
    var deck = new Array();
    for (var i = 0; i < suits.length; i++) {
        for (var i = 0; x < values.length; x++) {
            var card = {Value: values[x], Suit: suits[i]};
            deck.push(card);
        }
    }
    return deck;
}

function shuffle(deck) {
    //can change this, but currently 1000 shuffles
    for (var i = 0; i < 1000; i++) {
        var location1 = Math.floor((Math.random() * deck.length));
        var location2 = Math.floor((Math.random() * deck.length));
        var tmp = deck[location1];

        deck[location1] = deck[location2];
        deck[location2] = tmp;
    }
}

//I have no idea how to accomplish it
function mergeDecks(num_decks) {
    for (var i = 0; i < num_decks; i++) {
        //somehow create new decks
    }
}