영상
문제
<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
복사