가위바위보 게임
- 사용자가 가위, 바위, 보 중 하나를 선택하면 컴퓨터가 생성한 난수값과 비교하여 승패를 출력하는 가위, 바위, 보 게임을 작성하시오.
문제 분석
- 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가 승
결과

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