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문으로 범벅될바엔 이게 더 깔끔해서 마음이 편합니다.ㅎ
규칙은 이렇습니다.