2013-10-16 2 views
0

내 2 차원 어레이를 "섞어"버리는 방법이 궁금합니다. 나는 메모리 매치 플립 카드 게임을 만들고 있으며 도움이나 올바른 방향으로 밀고 나가는 것에 감사 할 것입니다.(자바 스크립트) 이미지의 2 차원 배열을 무작위로 변환하려면 어떻게해야합니까?

내 2 차원 배열은 내가하고 싶은 것은 내 2 차원 배열의 형식이 임의의 정수 쌍을 뱉어 함수를 만들 수있는 좁은 그리드

에서 이미지의 6 "수준"으로 구성되어 있습니다. 예를 들어

이 내 배열 : 그래서 내 이미지로 div의에 저장됩니다

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

} 

; 이 패턴은 2d 배열의 6 개 레이어가 있기 때문에 61, 62, 63, 64, 65 및 66까지 1 씩 증가합니다.

그래서 내가하고 싶은 것은 배열을 랜덤 화하고 숫자를 새로운 배열로 다시 연결하는 변수를 만드는 것입니다.

  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를 읽으십시오. 또한 배열의 모양이 의심스러워서 왜 모두 비슷합니까? 왜 똑같은 것을 많이 필요로합니까? 그것은 잘못 느낀다. –

답변

0

이유는 바로이 없습니다 :

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

잘 작동하지만, div에 rnd를 넣으려고하면 "TypeError : imgArray [(parseInt (...) -1)]가 정의되지 않았습니다."라는 메시지가 나타납니다. 왜 그런지 아십니까? – user2825148

관련 문제