▶프로그램 설명
컴퓨터가 0~9 사이의 숫자 3개를 중복되지 않게 선택한다.
[컴퓨터가 선택한 숫자]
2 0 7
사용자도 0~9 사이의 숫자 3개를 중복되지 않게 선택한다.
[사용자가 선택한 숫자]
5 2 7
사용자가 고른 숫자 3개를 컴퓨터가 선택한 숫자 3개와 비교했을 때
숫자가 포함되어 있지만 위치가 일치하지 않는 경우에는 ball
숫자가 포함되어 있고 위치까지 일치하는 경우에는 strike
숫자가 포함되어 있지 않은 경우에는 out
[결과]
1 strike 1 ball 1 out
사용자가 주어진 도전 횟수 내에 숫자 3개를 입력하여 숫자의 종류와 위치까지 모두 맞추면 승리하는 게임이다.
즉, 결과가 3 strike 0 ball 0 out인 경우에 사용자의 승리로 게임이 종료된다.
▶소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | package BaseBallGame; import java.util.Random; import java.util.Scanner; import java.util.ArrayList; import java.util.InputMismatchException; import java.util.Iterator; public class MainClass { static int strike, ball, out; final static int chances = 7; public static void main(String[] args) { Random r = new Random(); Scanner sc = new Scanner(System.in); int ranNum; while (true) { System.out.println("[야구 게임 시작!!]"); ArrayList<Integer> computer = new ArrayList<Integer>(); ArrayList<Integer> user = new ArrayList<Integer>(); boolean[] check = new boolean[10]; // System.out.println(ranNum); for (int i = 0; i < 3; i++) { do { ranNum = r.nextInt(10); } while (check[ranNum] == true); check[ranNum] = true; computer.add(ranNum); } try { for (int chance = 1; chance <= chances; chance++) { strike = ball = out = 0; System.out.println("\n<" + chance + "번째 시도>" ); System.out.print("숫자 3개 입력 : "); for (int i = 0; i < 3; i++) user.add(sc.nextInt()); Iterator<Integer> it = computer.iterator(); Iterator<Integer> it2 = user.iterator(); while (it.hasNext()) { int comNum = it.next(); int userNum = it2.next(); if (comNum == userNum) strike++; else { if (user.contains(comNum) == true) ball++; else out++; } } if (strike == 3) { System.out.println("정답입니다."); break; } else System.out.println(strike + " strike " + ball + " ball " + out + " out"); System.out.printf("남은 기회 : %d\n", chances-chance); user.clear(); } System.out.println("정답 : " + computer.toString()); System.out.println("1. 게임 재시작"); System.out.println("2. 게임 종료"); int select = sc.nextInt(); if (select == 1) continue; else if (select == 2) System.exit(0); } catch (InputMismatchException ex) { System.out.println("input error!"); sc.nextLine(); // 버퍼 비우는 작업 System.exit(0); continue; } } } } | cs |