如何检查手中的卡是否与桌上的卡相匹配?

时间:2009-10-10 11:13:26

标签: javascript matching rightjs playing-cards

桌子上有8张牌,四张脸可见,四张隐藏。点击一张卡片进行转动,如果有匹配或匹配,请在相关卡片周围显示火花。

问题是,我要么在逻辑上做错了,要么.concat()不起作用。因为有些火花显示而有些没有。

整个游戏可能会被重构为适当的对象,但这超出了我目前的水平(我已经学习JS一个月了)。使用的框架是RightJS。发布整个函数是为了清晰起见和一些背景。

function pick(card) {
    var matches = [],
        pip = [],
        suit = [];

    //Check for matches
    ['card1', 'card2', 'card3', 'card4'].each(function (el) {
        if (hand[el].charAt(0) == 'j') {
            matches.push(card);
            matches.push(el);
        } //Joker
        else if (hand[card].charAt(1) == hand[el].charAt(1) || hand[card].charAt(0) == 'j') {
            matches.push(card);
            pip.push(el);
        } //Pip match
        else if (hand[card].charAt(0) == hand[el].charAt(0) || hand[card].charAt(0) == 'j') {
            matches.push(card);
            suit.push(el);
        } //Suit match
    });
    if (pip.length > suit.length) {
        matches.concat(pip);
    } else {
        matches.concat(suit);
    }

    //Hide old bling
    $$('.bling').each(function (el) {
        el.hide();
    });

    //Show bling
    if (matches.length > 0) {
        matches.each(function (el) {
            $(el).firstChild.show();
        });
    }

    //Show the card from hand
    $(card).setClass(hand[card]);
    turned++;

    // New turn if all have been clicked
    if (turned == 4) {
        turned = 0;
        newturn();
    }
}

1 个答案:

答案 0 :(得分:0)

诀窍是先制作卡片组,然后在分发卡片时从卡片组中取出卡片。 ?

以下是使用classesArray.splice()和52张卡片的一种方法。您使用Deck.drawCard()抽出一张卡片。

Here is a demo.

_getData() async {
    var docID;
    var query;
    var firebaseUser = await FirebaseAuth.instance.currentUser();
    final databaseReference = Firestore.instance;
    databaseReference
        .collection("users")
        .where('uid', isEqualTo: firebaseUser.uid)
        .getDocuments()
        .then((querySnapshot) {
            docID = querySnapshot.documents[0].reference.documentID;
            query = databaseReference
                        .collection('users')
                        .document(docID)
                        .collection('GPA')
                        .document(sem1)
                        .get()
                        .then((DocumentSnapshot ds) {
                            print(ds.data);
                        });
        });
}