0

2次元配列を「シャッフル」する方法を知りたいです。私はメモリ マッチ フリップ カード ゲームを作成しています。何らかの支援や正しい方向へのプッシュをお願いします。

私の 2D 配列は、6x6 グリッド内の 6 つの「レベル」の画像で構成されています

私がやりたいことは、2 次元配列の形式で 2 つのランダムな整数のペアを吐き出す関数を作成することです。

たとえば、これは私の配列です:

var imgArray = [['a.png', 'b.png', 'c.png', 'd.png', 'e.png', 'f.png', 'g.png'], 
['a.png', 'b.png', 'c.png', 'd.png', 'e.png', 'f.png', 'g.png'], 
['a.png', 'b.png', 'c.png', 'd.png', 'e.png', 'f.png', 'g.png'], 
['a.png', 'b.png', 'c.png', 'd.png', 'e.png', 'f.png', 'g.png'], 
['a.png', 'b.png', 'c.png', 'd.png', 'e.png', 'f.png', 'g.png'], 
['a.png', 'b.png', 'c.png', 'd.png', 'e.png', 'f.png', 'g.png']];


function onClickCard(image)
{
    image.src=imgArray[parseInt(image.name.substring(0, 1)) - 1][parseInt(image.name.substring(1, 2)) - 1];

}

私の画像はdivに次のように保存されます。11、12、13、14、15、および 16。2 次元配列には 6 つの層があるため、このパターンは 1 ずつ増加して 61、62、63、64、65、および 66 まで続きます。

そこで私がやりたいことは、配列をランダム化し、数値を新しい配列につなぎ合わせる変数を作成することです。

私はこれを自分でやろうとしましたが、これが私が思いついたものです:

            var ImgLocArrayRow1 = new Array(11,12,13,14,15,16);
        var ImgLocArrayRow2 = new Array(21,22,23,24,25,26);
        var ImgLocArrayRow3 = new Array(31,32,33,34,35,36);
        var ImgLocArrayRow4 = new Array(41,42,43,44,45,46);
        var ImgLocArrayRow5 = new Array(51,52,53,54,55,56);
        var ImgLocArrayRow6 = new Array(61,62,63,64,65,66);
        var ImgLocArrayGM = new Array(ImgLocArrayRow1, ImgLocArrayRow2,       ImgLocArrayRow3, ImgLocArrayRow4, ImgLocArrayRow5, ImgLocArrayRow6);
var ArrayString = join(ImgLocArrayGM);
var Randomizah = Math.floor(Math.random() * ArrayString.length - 1, 0);
var RandomizahRegulatah = imgArray.splice(Randomizah, 1)[ImgLocArrayGM];

これにより、11 から 66 までの乱数が吐き出されることを期待していますが、「結合が定義されていません」というエラーが表示されます。

これを読んで私を助けてくれてありがとう。

4

1 に答える 1