본문 바로가기

JAVA/국비 공부

3월 6일 수업( Guessing Game)

숫자 맞추기 게임

1. 플레이 기능
   플레이 기능에서는 컴퓨터가 1부터 100사이의 랜덤한 숫자를 하나 뽑고
   사용자가 그 숫자를 맞추는 기능이 구현되어있다.

   사용자가 컴퓨터가 뽑은 숫자를 맞출때까지 계속 입력하되
   사용자의 숫자가 더 클 경우에는 down이라는 메세지가 출력이 되고
   사용자의 숫자가 더 작을경우에는 UP이라는 메세지가 출력이 된다

   사용자가 입력하는 숫자는 1~100 을 벗어날 수 없다.

   또한 사용자가 입력할때마다 점수가 1씩추가되서
   결국 몇번만에 맞췄는지 점수가 나오고
   해당 점수가 최고기록보다 작으면, 그 점수가 새로운 최고 기록이 된다.

2. 최고 기록 보기
   현재까지 플레이한 기록을 보여준다
   단, 사용자가 플레이한 기록이 없을 경우, "아직 플레이 기록이 없습니다."라는 간단한 메세지만 출력한다.

3. 종료기능
   프로그램을 종료시킨다.

 

package day0306;
import java.util.Scanner;
import java.util.Random;

public class GuessingGame {
 static final int NUMBER_MIN = 1;
    static final int NUMBER_MAX = 100;

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        Random random = new Random();

        // 최고 점수를 저장할 변수
        int bestScore = 0;

        while (true) {
            System.out.println();
            System.out.println("1. 플레이");
            System.out.println("2. 최고기록 ");
            System.out.println("3. 종료 ");
            System.out.println();
            System.out.print(">");
            int userChoice = scanner.nextInt();
            if (userChoice == 1) {
                // 플레이 코드구현

                // 현재 변수 선언
                int currentScore = 0;

                // 1.컴퓨터 숫자 결정
                int computerNumber = random.nextInt(NUMBER_MAX) + 1;

                // 2. 사용자의 입력
//                //a. 숫자 입력
                System.out.println("1부터 100사이의 숫자를 입력해주세요");
                System.out.print(">");
                int userNumber = scanner.nextInt();

                while (!(userNumber >= NUMBER_MIN && userNumber <= NUMBER_MAX)) {
                    System.out.println("잘못 입력하셨습니다");
                    System.out.println("1부터 100사이의 숫자를 입력해주세요");
                    System.out.print(">");
                    userNumber = scanner.nextInt();
                }

                currentScore++;

//                //b. 컴퓨터 숫자와 같을때까지 입력////c. 입력할 때마다 현재 점수 1추가

                while (userNumber != computerNumber) {
                    // 컴퓨터 숫자와 사용자의 숫자를 비교해서
                    // up혹은 down둘 중 하나를 출력해준다.
                    if (userNumber < computerNumber) {
                        System.out.println("Up");
                    } else {
                        System.out.println("Down");
                    }
                    System.out.println("1부터 100사이의 숫자를 입력해주세요");
                    System.out.print(">");
                    userNumber = scanner.nextInt();

                    while (!(userNumber >= NUMBER_MIN && userNumber <= NUMBER_MAX)) {
                        System.out.println("잘못 입력하셨습니다");
                        System.out.println("1부터 100사이의 숫자를 입력해주세요");
                        System.out.print(">");
                        userNumber = scanner.nextInt();
                    }

                    currentScore++;

                }

                // 3. 이번판 결과 출력

                // a. 축하메세지
                System.out.println("짝짝짝 정답입니다.");

                // b. 현재 점수 출력
                System.out.printf("사용자의 이번라운드 기록: %3d회\n", currentScore);

                // c. 최고기록 출력
                if(bestScore!= 0) {
                    System.out.printf("현재 최고 기록: %3d회\n", bestScore);
                }
                
                // d. 최고 기록 결정
                if (currentScore < bestScore || bestScore == 0) {
                    System.out.println("짝짝짝 새로운 최고 기록을 달성했습니다.");
                    bestScore = currentScore;
                }

            } else if (userChoice == 2) {
                // 최고 기록 구현
                if (bestScore > 0) {
                    System.out.println();
                    System.out.printf("사용자의 최고 기록: %3회\n", bestScore);
                    System.out.println();
                } else {
                    System.out.println();
                    System.out.println("아직 플레이 기록이 존재하지 않습니다.");
                    System.out.println();
                }
                // 최고 기록 보기 코드 구현
            } else if (userChoice == 3) {
                System.out.println("플레이 해주셔서 감사합니다.");
                break;
            }
        }

        scanner.close();
    }

}


   
       

'JAVA > 국비 공부' 카테고리의 다른 글

3월6일 수업(별찍기01)  (0) 2021.03.08
3월 6일 수업(가위바위보 게임)  (0) 2021.03.08
3월6일 수업(Prime Number)  (0) 2021.03.08
3월 6일 수업 (중첩for문)  (0) 2021.03.08
3월 6일 수업(반복문 02)  (0) 2021.03.08