[JAVA] 21. else if를 사용한 가위바위보 게임

문정준's avatar
Feb 05, 2025
[JAVA] 21. else if를 사용한 가위바위보 게임

가위바위보 게임

  • 사용자가 가위, 바위, 보 중 하나를 선택하면 컴퓨터가 생성한 난수값과 비교하여 승패를 출력하는 가위, 바위, 보 게임을 작성하시오.

문제 분석

  • Scanner를 통해 입력 받은 정수를 변수에 저장
  • 컴퓨터가 사용할 난수 ( 0 ~ 2 ) 필요
  • 가위 바위 보의 게임 룰
    • 가위(0)는 바위(1)에 진다. : 0 < 1
    • 바위(1)는 보(2)에게 진다. : 1 < 2
    • 보(2)는 가위(0)에게 진다. : 2 < 0 ? → 2 < 3 % 3
    • 같은 수면 무승부가 된다.
 

코드 작성

package ex03; import java.util.*; public class RockPaperScissor { public static void main(String[] args) { // 1. 가위(0), 바위(1), 보(2) 선언 int scissor = 0, rock = 1, paper = 2; // 2. 사용자 입력 받기 Scanner sc = new Scanner(System.in); System.out.print("가위(0), 바위(1), 보(2) : "); int user = sc.nextInt(); // 3. 컴퓨터 난수 설정 int computer = (int) Math.random() * 3; // 0 ~ 1 사이의 난수 * 3을 정수로 변환 // 4. 경우의 수 출력 if (user == computer) { System.out.println("비겼습니다."); } else if (user == (computer + 1) % 3) { // user와 computer가 다르고, user가 computer보다 수가 1이 클 때 이김 // 가위 (0 = 3 % 3 = (2 + 1) % 3) 는 보(2)를 이김 System.out.println("인간 : " + user + "\t컴퓨터 : " + computer + "\t인간 승리"); } else { // 지는 경우 : 나머지 System.out.println("인간 : " + user + "\t컴퓨터 : " + computer + "\t컴퓨터 승리"); } } }
  • Scanner를 통해 입력 받을 정수를 user에 저장
  • 컴퓨터의 난수를 0부터 2까지 설정하기 위해 Math.random() * 3을 정수로 다운캐스팅
  • user와 computer 비교
    • 같을 경우 무승부, 다를 때 computer보다 user가 1이 크면 user 승
      • 보(2)를 가위(0)가 이기기 위해서는 보에 1를 더하고 3으로 나눈 나머지를 구함
    • 나머지 경우는 computer가 승
 

결과

notion image
 
💡
문제 요점
  1. Scanner를 통해 입력 받을 정수를 변수에 저장
  1. 가위 바위 보 게임의 룰을 이해하고 이를 반영하는 방법에 대해 고민할 것
  1. 컴퓨터의 난수는 0 ~ 1까지이므로, 이 범주를 확대하여 정수로 표현하는 것에 유의
Share article

sxias