0

私はマッチング ゲームを作成しており、配列からクラスを追加してマッチングしようとしています。以下のコードは、必要なクラスを作成し、それらをランダム化します。

私の問題は randomizeDeck 関数にあります。指定された要素に各クラスを 2 回追加しようとしています。コードを console.log にすると、クラスは最初の 6 つの要素に追加されますが、最後の 6 つには追加されません。これは、作成しているマッチング ゲームでクラスを照合するために行う必要があります。

var cardDeck = new Array();

function createDeck() {
    for (i = 1; i <= 6; i++) {
        cardDeck.push("card-" + i);
    }
}
createDeck();

var randDeck = cardDeck.sort(randOrd);

function randomizeDeck() {
    card.each(function(i){
        $(this).addClass(randDeck[i]);
    });
}
randomizeDeck();
4

4 に答える 4

1

あなたの createDeck 関数は、6 ではなく 12 のクラスを作成する必要があると思います。各クラスを 2 回プッシュするだけです。

function createDeck() {
    for (i = 1; i <= 6; i++) {
        cardDeck.push("card-" + i);
        cardDeck.push("card-" + i);
    }
}

次に、ランダム化されて 12 枚のカードに割り当てられる 12 のクラス (6 つの固有のクラスごとに 2 つ) の配列ができます。

于 2013-09-26T19:11:05.410 に答える
0

インデックスではなく、インデックスを追跡する別の変数をお勧めしeachます。パックを 1 回使用したら、2 回目のパスで順序が異なるように、もう一度デッキをシャッフルすることをお勧めします。YMMV。

function sortCards(randOrd) {
  randDeck = cardDeck.sort(randOrd);
}

function randomizeDeck() {
  var count = 0;
  cards.each(function(i) {
    if (i === 6) { count = 0; sortCards(randOrd); }
    $(this).addClass(randDeck[count]);
    count++;
  });
}
于 2013-09-26T19:16:17.467 に答える
0

このようなことを試してみてください-テスト済みで更新されました このフィドルを参照してください http://jsfiddle.net/8XBM2/1/

var cardDeck = new Array();

function createDeck() {
    for (i = 1; i <= 6; i++) {
        cardDeck.push("card-" + i);
    }
}
createDeck();
var randDeck = cardDeck.sort();
alert(randDeck);

function randomizeDeck() {
    var x = 0;
    $('div').each(function(i){
     if ( i > 5) { 

                $(this).addClass(randDeck[x]);
         x++; 
      } else {
        $(this).addClass(randDeck[i]);
    }
    });
}
randomizeDeck();
于 2013-09-26T19:00:58.740 に答える
0

randomizeDeck() 関数は、クラス名の同じ配列を 2 回使用するように書き直すことができます。

function randomizeDeck() {
    card.each(function(i){
        if(i < 6)
            $(this).addClass(randDeck[i])
        else
            $(this).addClass(randDeck[i-6]);
    });
}

注: jQuery オブジェクトであり、この場合はそれらのコレクションであることがわかるように、変数cardを次のように書き直します。$cardsそうしないと、他の JavaScript 変数と区別するのが難しくなります。

于 2013-09-26T18:51:59.797 に答える