桌上有 8 张牌,其中 4 面可见,4 面隐藏。单击一张卡片将其翻转,如果有点子匹配或西装匹配,则在相关卡片周围显示火花。
问题是,我要么在逻辑上做错了事,要么 .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();
}
}