Search

배열5_문제04_기억력게임

대분류
STEP04 배열
소분류
배열5_문제

영상

문제

package 배열5_문제; /* [기억력 게임] 1. front배열 카드 10장을 섞는다.(shuffle) 2. front배열에서 같은 카드 두 장을 고르기 위해 카드의 인덱스를 입력받는다. 3. 사용자가 선택한 두 장의 카드가 같은 카드이면, back배열에 표시한다. 4. 모든 카드가 뒤집히면(= back배열에 0이 사라지면) 게임은 종료된다. */ public class 배열5_문제04_기억력게임_문제 { public static void main(String[] args) { int[] front = {1,1,2,2,3,3,4,4,5,5}; int[] back = {0,0,0,0,0,0,0,0,0,0}; } }
Java
복사

해설

package 배열5_문제; import java.util.Arrays; import java.util.Random; import java.util.Scanner; /* [기억력 게임] 1. front배열 카드 10장을 섞는다.(shuffle) 2. front배열에서 같은 카드 두 장을 고르기 위해 카드의 인덱스를 입력받는다. 3. 사용자가 선택한 두 장의 카드가 같은 카드이면, back배열에 표시한다. 4. 모든 카드가 뒤집히면(= back배열에 0이 사라지면) 게임은 종료된다. */ public class 배열5_문제04_기억력게임_정답1 { public static void main(String[] args) { Random ran = new Random(); Scanner scan = new Scanner(System.in); int[] front = {1,1,2,2,3,3,4,4,5,5}; int[] back = {0,0,0,0,0,0,0,0,0,0}; // 1. front배열 shuffle for(int i=0; i<50; i++) { int r1 = ran.nextInt(front.length); int r2 = ran.nextInt(front.length); int temp = front[r1]; front[r1] = front[r2]; front[r2] = temp; } System.out.println(Arrays.toString(front)); int count = 0; // 2. 게임시작 while(true) { System.out.println(Arrays.toString(front)); System.out.println(Arrays.toString(back)); // 3. 게임 종료 if(count == front.length/2) { System.out.println("게임을 종료합니다."); break; } // 2-1. 사용자로부터 인덱스 2개 입력받기 System.out.print("인덱스1 입력 : "); int index1 = scan.nextInt(); System.out.print("인덱스2 입력 : "); int index2 = scan.nextInt(); // 2-2. 예외처리 if(index1 == index2) { System.out.println("인덱스 선택 오류!"); continue; } if(back[index1] != 0 || back[index2] != 0) { continue; } // 2-3. 선택한 카드가 같은 숫자인지 확인 if(front[index1] == front[index2]) { back[index1] = front[index1]; back[index2] = front[index2]; count += 1; } } scan.close(); } }
Java
복사