Java/기타

숫자 야구 게임 Lv2

열심히 해 2024. 9. 13. 16:56

요구 사항 : 

  • 입력값이 유효한지 검사하기
    • 3자리 수인지 자릿수를 검사합니다.
    • 중복된 숫자가 없는지 중복 숫자를 검사합니다.
    • 입력값에 숫자만 포함되어 있는지 검사합니다.
    • 유효하지 않은 값인 경우 “올바르지 않은 입력값입니다.”를 출력합니다.
  • 출력 개선
    • 프로그램을 시작할 때 안내문구를 보여주세요.
      • 1을 입력하면 “필수 구현 기능” 의 예시처럼 게임이 진행됩니다.
      • “2. 게임 기록 보기”는 Lv3에서 제시됩니다. (2는 입력할 수 없습니다.)
      • 3을 입력하면 게임이 종료됩니다.
  •  정답을 맞히는 경우, 아래 문구를 보여주세요
// 예시
환영합니다! 원하시는 번호를 입력해주세요
1. 게임 시작하기 2. 게임 기록 보기 3. 종료하기
1 // 1번 게임 시작하기 입력

< 게임을 시작합니다 >
        숫자를 입력하세요
...

 

 


 

수정 사항 및 아이디어

 

1. 입력 받을 때 String 타입으로 받았는데 int 타입으로 수정해야함. 그 이후 자릿수 검사, 중복된 숫자 검사, 숫자만 포함되었는지 검사를 해야함....

 

2. 예외 처리 마구 하기.  

 

3. 게임 시작 시 안내 문구 메서드를 만들까? -> 클래스를 만들자

 

4. 정답 시 게임 다시할 수 있게 하기 -> do-while문으로 해결

 

 

Beginning 클래스

더보기
import java.util.Scanner;

public class Beginning {
    int beginn () {
        System.out.println("숫자 야구 게임을 시작하지");
        System.out.println("날 쓰러뜨리지 못한다면 지나갈 수 없다!");
        System.out.println("1. 게임 시작하기 2. 게임 기록보기 3. 종료하기");

        Scanner inputValue = new Scanner(System.in);
        int input = inputValue.nextInt();
    return input;}
}

 

InputNumber 클래스

더보기
import java.util.InputMismatchException;
import java.util.Scanner;

public class InpuetNumber {
    public int first;
    public int second;
    public int third;

    public InpuetNumber(int first, int second, int third) {
        this.first = first;
        this.second = second;
        this.third = third;
    }

    public static InpuetNumber getThreeInts() {
        System.out.println("<게임을 시작합니다>");
        System.out.println("세 자리 수의 자연수를 입력하세요");
        Scanner inputNumber = new Scanner(System.in);
        boolean valid = true;

        int int0 = 0;
        int int1 = 0;
        int int2 = 0;
        while (!valid) {
            try {
                int answerNumber = inputNumber.nextInt();
                int0 = answerNumber / 100;
                int1 = (answerNumber / 10) % 10;
                int2 = answerNumber % 10;

                if (answerNumber >= 100 && answerNumber <= 999) {
                    valid = true;
                } else if (int0 == int1 || int0 == int2 || int1 == int2) {
                    System.out.println("중복된 숫자를 입력하였습니다");
                } else {
                    System.out.println("잘못된 입력입니다. 세 자리 수를 자연수를 입력하세요");
                }
            } catch (InputMismatchException e) {
                System.out.println("잘못된 입력입니다. 세 자리 수의 자연수를 입력하세요");
                inputNumber.next();
            }
        }
        return new InpuetNumber(int0, int1, int2);
    }
}

 

Main 클래스 

 

더보기
import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args)  {
        MakeNumber makeNumber = new MakeNumber();
        ArrayList<Integer> numberList = new ArrayList<>(makeNumber.makeNumbers());
        System.out.println(numberList);
        MatchNumbers matchNumbers = new MatchNumbers();
        boolean endGameKey = false;
        Beginning beginning = new Beginning();
        int startKey = beginning.begin();

        switch (startKey) {
            case 1:
                int restartKey;
                do {
                    System.out.println("게임을 시작합니다");
                    do {
                        InpuetNumber threeInts = InpuetNumber.getThreeInts();
                        endGameKey = matchNumbers.operate(numberList, threeInts.first,
                                threeInts.second, threeInts.third, endGameKey);
                    } while (endGameKey);

                    System.out.println("게임을 다시 시작하시려면 0, 끝내려면 아무키나 입력하시오");
                    Scanner restart = new Scanner(System.in);
                    restartKey = restart.nextInt();
                } while (restartKey == 0);

            case 2:

            case 3:
                System.out.println("다음에 또 만나요");
        }
    }
}

 

'Java > 기타' 카테고리의 다른 글

숫자 야구 게임 Lv 4  (14) 2024.09.22
숫자 야구 게임 Lv3  (0) 2024.09.14
숫자 야구 게임 Lv1  (1) 2024.09.12
1, 2주차 과제 다시 하기.  (4) 2024.09.07
계산기 만들기  (0) 2024.09.06