본문 바로가기

공부/JAVA

JAVA 가위바위보 (개선) 명품 자바 6장 6번

import java.util.Scanner;

public class RPSgame {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        while(true) {
            System.out.print("가위(1), 바위(2), 보(3), 끝내기(4)>> ");

            int user = scanner.nextInt();
            int computer = (int)(Math.random()*3 + 1);
            if (user == 4) {
                System.out.println("게임을 종료합니다...");
                break;
            }

            else if (user < 1 | user > 4) {
                System.out.println("올바른 숫자를 입력해주세요.");
            }

            else { // 삼항연산자 사용
                System.out.print("사용자 " + ((user == 1)? "가위": (user == 2)? "바위": "보")+" : ");
                System.out.println("컴퓨터 " + ((computer == 1)? "가위": (computer == 2)? "바위": "보"));
            }
            
		// 사용자가 낸 숫자와 컴퓨터의 랜덤 숫자를 곱한 값을 기준으로 승패 결정
            switch(user * computer) {
                // 곱한 값이 2, 3, 6이라면 누군가가 이기거나 짐
                case 2:
                    // 사용자의 수가 더 크다면 사용자가 이김
                    System.out.println("사용자가 "+((user>computer)?"이겼습니다.": "졌습니다."));
                    break;
                case 3:
                     // 컴퓨터의 수가 더 크다면 사용자가 짐
                    System.out.println("사용자가 "+((user<computer)?"이겼습니다.": "졌습니다."));
                    break;
                case 6:
                    // 사용자의 수가 더 크다면 사용자가 이김
                    System.out.println("사용자가 "+((user>computer)?"이겼습니다.": "졌습니다."));
                    break;
                case 1 :
                case 4 :
                case 9 :
                    System.out.println("비겼습니다."); // 곱한 값이 1, 4, 9라면 비김
            }
        }
    scanner.close();
    }
}

자바의 삼항 연산자 사용했습니다.

효율은 모르겠지만 switch case문으로 범벅될바엔 이게 더 깔끔해서 마음이 편합니다.ㅎ

 

규칙은 이렇습니다.