2013-10-16 64 views
0

我想知道如何「洗牌」我的2D陣列。我正在創建一個記憶匹配翻牌遊戲,並希望得到一些幫助或推動正確的方向。(Javascript)我如何隨機化一個2D圖像數組?

我的二維陣列由6在6x6的網格

圖像的「級別」我想要做的就是創建一個吐出對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. 該模式以1的增量繼續到61,62,63,64,65和66,因爲有2層陣列的6層。

所以我想要做的是創建一個變量,它隨機化數組並將數字拼接回新數組。

我想這個做我自己,這就是我想出了:

  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]; 

我期望這將通過對66吐出11之間的隨機數,但我得到一個錯誤,指出「連接被沒有定義的」。

非常感謝您花時間閱讀/幫助我。

+2

你的意思'ImgLocArrayGM.join()'? – akonsu

+0

如果你不需要如何所有數組混洗之間的一致性,請閱讀以下問題:http://stackoverflow.com/questions/2450954。另外,你的陣列看起來像一個懷疑:他們爲什麼都一樣?你爲什麼需要這麼多相同的東西?感覺不對。 – 2013-10-16 09:03:27

回答

0

爲什麼不只是這一點:

var rnd = Math.floor(Math.random()*6+1)*10+Math.floor(Math.random()*6+1) 
+0

但是,這工作得很好,當我嘗試將rnd放入div時,我得到「TypeError:imgArray [(parseInt(...)-1]]未定義」。任何想法爲什麼這是? – user2825148