본문으로 바로가기

궁금한 사항은 댓글로 남겨주세요. 소스마다 주석을 남겼으니 참고하시면 됩니다.

 

    1. 10판을 컴퓨터와 가위바위보 하여 이긴수, 비긴수, 패배수 카운트하여 결과를 보여준다.
    2. 컴퓨터가 수는 Math.random 메소드를 이용하여 임의의 값을 받도록 한다.

 

소스

 

Rock_Paper_Scissors.java

 

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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import java.util.Scanner;
 
public class Rock_Paper_Scissors {
 
    //가위, 바위, 보를 정수형과 맵핑하기 위하여 final 변수 설정
    private static final int SCISSORS = 1//가위
    private static final int ROCK = 2//바위
    private static final int PAPER = 3//보
 
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
 
        while(true) {
            System.out.println("경기 시작 : 1, 종료 : 2");
            
            if(scanner.nextInt() > 1break;
 
            int win =0;    //이긴 수
            int compare = 0//비긴 수
            int fail = 0//패배 수
            
            int random = 0//컴퓨터가 낸 값
            int user = 0//유저가 낸 값
 
            for(int idx=0; idx < 10; idx++) {
                int ret = 0//가위바위보 결과 
                
                //컴퓨터 가위/바위/보 중에 랜덤으로 생성
                random = (int) (Math.random() * 10) % 3 + 1;
                
                System.out.println("가위 바위 보중에 한가지를 선택하세요. (가위 : 1, 바위 : 2, 보 : 3)");
                //유저각 낸 값 저장
                user = scanner.nextInt();
                
                //가위바위보 결과를 저장한다.
                ret = result(user, random);
 
                if(ret == 0) {
                    win++;
                }else if(ret == 1) {
                    fail++;
                }else if(ret == 2) {
                    compare++;
                }
            }
            System.out.println("총 " + win + "승, " + fail + "패, " + compare + "무 입니다.");
        }
    }
    
    /**
     * 
     * @param user 사용자가 낸 값
     * @param computer 컴퓨터가 낸 값
     * @return int 유저가 이겼는지(0. 승리, 1. 패배, 2. 비김)
     */
    public static int result(int user, int computer) {
        int ret = 0;
 
        //비겼을 경우를 최우선으로 비교한다
        if(user == computer ) {
            System.out.println("비겼습니다.");
            ret = 2;
            return ret; 
        }
        
        //유저가 가위를 냈다면
        //컴퓨터가 낸 값이 바위와 보 둘중에 하나이므로 비교하여 승리, 패배결정
        if(user == SCISSORS) {
                System.out.print("유저 : 가위 ,");
            if(computer == ROCK) { 
                System.out.println("컴퓨터 : 바위 >>> 결과 : 패배");
                ret = 1;
            }else {
                System.out.println("컴퓨터 : 보 >>> 결과 : 승리");
                ret = 0;
            }
        }
        
        //유저가 바위를 냈다면
        //컴퓨터가 낸 값이 가위와 보 둘중에 하나이므로 비교하여 승리, 패배결정
        if(user == ROCK) {
                System.out.print("유저 : 바위 ,");
            if(computer == PAPER) { 
                System.out.println("컴퓨터 : 보 >>> 결과 : 패배");
                ret = 1;
            }else {
                System.out.println("컴퓨터 : 가위 >>> 결과 : 승리");
                ret = 0;
            }
        }
        
        //유저가 보를 냈다면
        //컴퓨터가 낸 값이 가위와 바위 둘중에 하나이므로 비교하여 승리, 패배결정
        if(user == PAPER) {
                System.out.print("유저 : 보, ");
            if(computer == SCISSORS) { 
                System.out.println("컴퓨터 : 가위 >>> 결과 : 패배");
                ret = 1;
            }else {
                System.out.println("컴퓨터 : 바위 >>> 결과 : 승리");
                ret = 0;
            }
        }
        
        //결과 리턴
        return ret;
    }
}
 
 

 

 

결  과