본문 바로가기

■ Java/projects

[Java] 숫자 야구 게임

▶프로그램 설명


컴퓨터가 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