Back-End/Java

[ JAVA ] 컴퓨터와 가위바위보 게임

oahee 2023. 7. 23. 16:28

< 조건 >

  • 사용자 값은 키보드로 입력받는다.
    • 입력 받은 값이 올바른지 확인한다.
    • 5회 이상 잘못 입력할 경우, 프로그램을 종료한다.
  • 컴퓨터 값은 랜덤하게 받는다.
  • 사용자와 컴퓨터의 값을 출력하고, 게임의 결과도 출력한다.
  • 게임의 결과가 출력된 후, 게임 추가 진행 여부를 확인한다.

 

import java.util.Scanner;

public class Ex03 {
	public static void main(String[] args) {

		int com=0, user=0;

		try (Scanner scanner = new Scanner(System.in)) {
			boolean flag = false;
			do {
				String regex = "[1-3]";		// 1~3 값인가
				int failCount = 0;	// 입력 실패 횟수

				// 사용자 값 입력받기
				do {
					System.out.print("> user 가위(1),바위(2),보(3) 선택 ? ");
					String userInput = scanner.next(); 

					// 입력값 유효성 확인
					if( userInput.matches(regex) ) {
						user = Integer.parseInt(userInput);
						flag = false;
					}
					else { 
						failCount++;
						System.out.printf("< [알림] %d회 입력이 잘못되었습니다. 1~3 중 하나 입력하세요.\n\n",failCount);
						if (failCount>=5) {
							System.out.println("프로그램 종료 : 5회 이상 잘못 입력");
							return; //프로그램 종료
                            //System.exit(int status)  // int status는 프로세스가 종료하면서 넘겨주는 값임
						} //if
						flag = true;
					}
				} while (flag);

				// 컴퓨터 값 1~3 랜덤 
				com = (int) (Math.random() * 3) + 1;

				// 컴퓨터와 user의 값 출력
				String[] rsp = {null, "가위", "바위", "보"};
				System.out.printf("> 컴퓨터: %s   user: %s\n", rsp[com], rsp[user]);

				// 게임 결과 출력
				switch (user - com) {
				case 1:  case -2:
					System.out.println("사용자 승리");
					break;
				case 2:  case -1:
					System.out.println("컴퓨터 승리");
					break;
				default:
					System.out.println("무승부");
					break;
				} // switch

				// y, Y 입력시 게임 재실행
				System.out.print("\n> 다시 게임을 실행하겠습니까?  ");
				char reInput = scanner.next().charAt(0);
				if ( Character.toUpperCase(reInput) == 'Y' ) flag = true;
				else {
					System.out.println("> end");
					flag = false;
				}
			} while (flag);

		} catch (Exception e) {
			e.printStackTrace();
		} // try-catch

	} //main
} //class

 

<출력결과>

> user 가위(1),바위(2),보(3) 선택 ? !
< [알림] 1회 입력이 잘못되었습니다. 1~3 중 하나 입력하세요.

> user 가위(1),바위(2),보(3) 선택 ? one
< [알림] 2회 입력이 잘못되었습니다. 1~3 중 하나 입력하세요.

> user 가위(1),바위(2),보(3) 선택 ? rock
< [알림] 3회 입력이 잘못되었습니다. 1~3 중 하나 입력하세요.

> user 가위(1),바위(2),보(3) 선택 ? 580
< [알림] 4회 입력이 잘못되었습니다. 1~3 중 하나 입력하세요.

> user 가위(1),바위(2),보(3) 선택 ? 2
> 컴퓨터: 바위   user: 바위
무승부

> 다시 게임을 실행하겠습니까?  y
> user 가위(1),바위(2),보(3) 선택 ? ye
< [알림] 1회 입력이 잘못되었습니다. 1~3 중 하나 입력하세요.

> user 가위(1),바위(2),보(3) 선택 ? 3
> 컴퓨터: 가위   user: 보
컴퓨터 승리

> 다시 게임을 실행하겠습니까?  n
> end