Search

배열6_문제16_기억력게임

대분류
STEP06 일차배열
문제 난이도
LV07
소분류
일차배열6_문제

영상

문제

<script> /* [문제] 1. 같은 숫자가 적혀있는 카드 2장씩 5세트가 있다. (총10장) 2. front는 카드를 엎어놓은 상태를 뜻한다. 3. 먼저 front를 셔플한다. 4. front에 있는 카드 2개를 랜덤으로 선택한다. (마우스가없으므로 인덱스로 선택) 5. 선택한 카드 2장의 내용이 같으면 back에 복사해서 맞춘 걸 표시한다. back에 모든 글자가 채워지면 게임은 종료된다. 6. 같은 인덱스 선택할 수 없다. 7. 이미 선택한 자리를 또 선택할 수 없다. [예시] 2, 1 : 선택한 두 카드의 값이 일치하지 않습니다. back = 0,0,0,0,0,0,0,0,0,0 6, 7 : back = 0,0,0,0,0,0,50,50,0,0 1, 0 : 선택한 두 카드의 값이 일치하지 않습니다. back = 0,0,0,0,0,0,50,50,0,0 3, 7 : 이미 선택한 위치입니다! back = 0,0,0,0,0,0,50,50,0,0 ... 5, 2 : back = 0,10,20,30,30,20,50,50,10,0 7, 7 : 동일한 위치를 선택했습니다! back = 0,10,20,30,30,20,50,50,10,0 0, 9 : back = 40,10,20,30,30,20,50,50,10,40 front = 40,10,20,30,30,20,50,50,10,40 back = 40,10,20,30,30,20,50,50,10,40 */ let front = [10, 10, 20, 20, 30, 30, 40, 40, 50, 50]; let back = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; </script>
Java
복사

해설

<script> /* [문제] 1. 같은 숫자가 적혀있는 카드 2장씩 5세트가 있다. (총10장) 2. front는 카드를 엎어놓은 상태를 뜻한다. 3. 먼저 front를 셔플한다. 4. front에 있는 카드 2개를 랜덤으로 선택한다. (마우스가없으므로 인덱스로 선택) 5. 선택한 카드 2장의 내용이 같으면 back에 복사해서 맞춘 걸 표시한다. back에 모든 글자가 채워지면 게임은 종료된다. 6. 같은 인덱스 선택할 수 없다. 7. 이미 선택한 자리를 또 선택할 수 없다. [예시] 2, 1 : 선택한 두 카드의 값이 일치하지 않습니다. back = 0,0,0,0,0,0,0,0,0,0 6, 7 : back = 0,0,0,0,0,0,50,50,0,0 1, 0 : 선택한 두 카드의 값이 일치하지 않습니다. back = 0,0,0,0,0,0,50,50,0,0 3, 7 : 이미 선택한 위치입니다! back = 0,0,0,0,0,0,50,50,0,0 ... 5, 2 : back = 0,10,20,30,30,20,50,50,10,0 7, 7 : 동일한 위치를 선택했습니다! back = 0,10,20,30,30,20,50,50,10,0 0, 9 : back = 40,10,20,30,30,20,50,50,10,40 front = 40,10,20,30,30,20,50,50,10,40 back = 40,10,20,30,30,20,50,50,10,40 */ let front = [10, 10, 20, 20, 30, 30, 40, 40, 50, 50]; let back = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; let size = front.length; // 1. front 배열 셔플 for(let i=0; i<10; i++) { let index1 = Math.floor(Math.random() * size); let index2 = Math.floor(Math.random() * size); let temp = front[index1]; front[index1] = front[index2]; front[index2] = temp; } document.write("front = " + front + "<br>"); document.write("back = " + back + "<br>"); // 2. 게임 시작 let count = 0; while(true) { let index1 = Math.floor(Math.random() * size); let index2 = Math.floor(Math.random() * size); document.write(index1 + ", " + index2 + " : ") if(index1 == index2) { document.write("동일한 위치를 선택했습니다!<br>"); } else if(index1 != index2 && back[index1] == 0 && back[index2] == 0) { if(front[index1] == front[index2]) { back[index1] = front[index1]; back[index2] = front[index2]; count += 1; } else { document.write("선택한 두 카드의 값이 일치하지 않습니다.<br>"); } } else { document.write("이미 선택한 위치입니다!<br>"); } document.write("back = " + back + "<br>"); document.write("<br>"); if(count == parseInt(size / 2)) { break; } } document.write("front = " + front + "<br>"); document.write("back = " + back + "<br>"); </script>
Java
복사