몇판? : 3
1번째 게임
가위/바위/보 중 하나를 입력 해주세요 : 가위
컴퓨터는 [보]를 선택했습니다.
플레이어 승!
현재 기록 : 1승 0무 0패
2번째 게임
가위/바위/보 중 하나를 입력 해주세요 : 보
컴퓨터는 [보]를 선택했습니다.
비겼습니다.
현재 기록 : 1승 1무 0패
3번째 게임
가위/바위/보 중 하나를 입력 해주세요 : 가위
컴퓨터는 [바위]를 선택했습니다.
졌습니다ㅠㅠ
현재 기록 : 1승 1무 1패
(1) 풀이
Scanner sc = new Scanner(System.in);
System.out.println("[가위 바위 보 게임]");
System.out.print("몇 판? : ");
int round = sc.nextInt();
// 승패 기록용 변수
int win = 0;
int draw = 0;
int lose = 0;
for(int i = 1; i <= round; i++) { // 입력받은 판 수 만큼 반복
System.out.println("\n" + i + "번째 게임");
System.out.print("가위/바위/보 중 하나를 입력 해주세요 : ");
String input = sc.next(); // 플레이어가 가위/바위/보 입력
// 컴퓨터 가위/바위/보 정하기(랜덤)
// 1) 1~3 사이 난수 생성
// 2) 1이면 가위, 2이면 바위, 3이면 보 지정(switch)
// 난수 생성 방법 : Math.random()
// -> 0.0 이상 1.0 미만의 난수가 생성됨
int random = (int)(Math.random() * 3 + 1);
// 0.0 <= x < 1.0
// 0.0 <= x * 3 < 3.0
// 1.0 <= x * 3 + 1 < 4.0
// 1 <= (int)(x * 3 + 1) < 4
// == 1 이상 4 미만의 정수 == 1 2 3
String com = null; // 컴퓨터가 선택한 가위/바위/보를 저장하는 변수
// null : 아무것도 참조하고 있지 않음
switch(random) {
case 1 : com = "가위" ; break;
case 2 : com = "바위" ; break;
case 3 : com = "보" ; break;
}
// 컴퓨터는 [바위]를 선택했습니다.
System.out.printf("컴퓨터는 [%s]를 선택했습니다.\n", com);
// The local variable com may not have been initialized
// 컴퓨터와 플레이어(기준) 가위 바위 보 판별
// win, draw, lose
// String 비교 시 equals() 사용!!
if(input.equals(com)) { // 비긴 경우
System.out.println("비겼습니다.");
draw++;
} else {
// 간단한 코드
boolean win1 = input.equals("가위") && com.equals("보");
boolean win2 = input.equals("바위") && com.equals("가위");
boolean win3 = input.equals("보") && com.equals("바위");
if(win1 || win2 || win3) {
System.out.println("플레이어 승!");
win++;
} else {
System.out.println("졌습니다ㅠㅠ");
lose++;
}
// 복잡한 코드
/*
if(input.equals("가위") && com.equals("보")) {
System.out.println("플레이어 승 !");
} else if(input.equals("바위") && com.equals("가위")) {
System.out.println("플레이어 승 !");
} else if(input.equals("보") && com.equals("바위")) {
System.out.println("플레이어 승 !");
} else {
System.out.println("졌습니다ㅜㅜ");
}
*/
} // else 끝
System.out.printf("현재 기록 : %d승 %d무 %d패\n", win, draw, lose);
}