Как проверить, совпадают ли карты в руках с картами на столе? - PullRequest
1 голос
/ 10 октября 2009

На столе 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();
    }
}
...