JAVA
JAVA로 가위바위보 게임 구현하기
낙자쌤™
2021. 8. 31. 18:46
728x90
반응형
Java에서 변수와 자료형, 조건문, 반복문을 강의한 후 과제로 내는 가위바위보 게임이다.
해당 게임의 조건은 다음과 같다.
- 이클립스에서 작성하고, quiz 패키지에 RockPaperScissors 클래스를 생성한다.
- 프로그램을 실행하면 컴퓨터는 1~3사이의 난수를 생성한다. 가위(1) 바위(2) 보(3)
- 사용자도 1~3사이의 정수 중 하나를 입력한다.
- 승부를 판단하여 출력한다.
- 만약 1~3을 벗어난 입력값이면 잘못 입력되었다고 출력한다. (이 경우 게임횟수에 포함되지 않는다.)
- 5번 게임을 진행한 후 계속할지 물어본다.
전체 코드는 다음과 같다. 라인별로 주석을 달아두었으니 참조하길 바란다.
package quiz;
import java.util.Random;
import java.util.Scanner;
public class RockPaperScissors {
public static void rpsGameStart() {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
int gameCount = 0; // 게임 카운트용 변수
while(true) {
//1. 난수생성 - 컴퓨터입장에서 가위/바위/보
int com = random.nextInt(10000) % 3 + 1;//1~3사이의 난수
System.out.println("컴퓨터:"+ com);
//2. 사용자입력
int user = 0;
System.out.println("가위바위보를 입력하세요.");
System.out.print("가위(1), 바위(2), 보(3)=>");
try {
user = scanner.nextInt();
}
catch (Exception e) {
scanner.nextLine();
e.printStackTrace();
}
//3.승부판단
//사용자가 정상적으로 입력한 경우
if(!(user<1 || user>3)) {
//가위바위보 출력용 함수를 이용해서 정보출력
System.out.printf("사용자:%s, 컴퓨터:%s ", displayRPS(user), displayRPS(com));
switch(user - com) {
case 0:
System.out.println("비겼습니다.");break;
case 1: case -2:
System.out.println("이겼습니다.");break;
case 2: case -1:
System.out.println("졌습니다.");break;
}
gameCount++;//게임카운트 증가
}
else {
System.out.println("가위바위보 할줄 몰라요?? 제대로 내세요 ㅋ");
}
//게임재시작 여부 확인
if(gameCount>=5) {
int restart;
while(true) {
System.out.print("게임재시작(1), 종료(0):");
restart = scanner.nextInt();
if(restart==0 || restart==1) {
//정상입력이면 루프탈출
break;
}
else {
System.out.println("잘못입력해씸ㅜㅜ\n");
}
}
if(restart==0) {
//게임종료를 위해 while루프 탈출
break;
}
else {
System.out.println("게임 재시작^^");
gameCount=0;
}
}
}//// end of while
}////end of rpsGameStart()
public static String displayRPS(int n) {
String str = "";
switch(n) {
case 1: str="가위";break;
case 2: str="바위";break;
case 3: str="보";break;
}
return str;
}
public static void main(String[] args) {
rpsGameStart();
}
}
소스코드 중 승부판단에 대한 부분만 간단히 설명하겠다.
가위, 바위, 보는 각각 1, 2, 3으로 설정하였다.
사용자와 컴퓨터가 제시한 숫자의 차를 구하면 다음과 같은 케이스가 나온다.
- 0 : 차가 0이라면 둘다 같은걸 냈을때이므로 비긴 경우
- 1 혹은 -2 : 사용자가 이긴 경우.
- 2 혹은 -1 : 사용자가 패배한 경우.
| 사용자 | 컴퓨터 | 차 | |
| 승리 | 가위(1) | 보(3) | -2 |
| 바위(2) | 가위(1) | 1 | |
| 보(3) | 바위(2) | 1 | |
| 패배 | 가위(1) | 바위(2) | -1 |
| 바위(2) | 보(3) | -1 | |
| 보(3) | 가위(1) | 2 |
만약 해당 로직이 없다면 승부판단을 위해 9번의 조건을 사용해야 한다.
끄읏~
728x90
반응형