Java Number Baseball Game TIL_3

coldrice99·2024년 9월 20일
0

🎯 숫자 야구 게임 Lv4 완성 트러블 슈팅 TIL


1. 난이도 조절 후 자동 게임 시작 문제

문제점:
난이도 조절 기능을 추가하면서, 사용자가 자릿수를 설정한 후 자동으로 게임이 시작되도록 구현하고자 했었다. 처음에는 choice = 1로 설정하여 case 1로 이동하게 하려고 했으나, 코드를 확인해보니 switch 문에서 case 0break가 없어서 자릿수 설정이 끝나면 자동으로 case 1로 이어지는 흐름이었다.

해결 방법:
자릿수 설정 후 자동으로 게임이 시작되도록 하려면 굳이 choice = 1로 설정할 필요가 없었고, break 없이 case 1로 이어지도록 코드를 유지하면 됐다. 이를 통해 자릿수 설정 후 자동으로 게임이 시작되도록 처리했다.

case 0:
    System.out.println("설정하고자 하는 자리수를 입력하세요. (3, 4, 5)");
    int newDigitLength = sc.nextInt();
    if (newDigitLength == 3 || newDigitLength == 4 || newDigitLength == 5) {
        digitLength = newDigitLength;
        System.out.println(digitLength + "자리 난이도로 설정되었습니다.");
    } else {
        System.out.println("잘못된 자릿수입니다. 3, 4, 5 중에서 선택하세요.");
        continue; // 잘못된 자릿수 입력 시 다시 반복
    }
    // break가 없으므로 자동으로 case 1로 이동
case 1:
    int attempts = game.play(digitLength); // 설정된 자릿수로 게임 시작
    gameCount++; // 게임 횟수 증가
    gameRecords.add(attempts); // 게임 기록 저장
    break;

2. 자릿수에 따른 입력 검증 문제

문제점:
게임 난이도를 조절할 때, 3자리, 4자리, 5자리 숫자를 설정할 수 있기 때문에, 자릿수에 맞는 입력을 검증해야 했다. 처음에는 3자리만 고정해서 처리했지만, 이를 난이도에 맞춰 동적으로 처리할 필요가 있었다.

해결 방법:
validateInput 메서드에 자릿수를 파라미터로 받아 입력값이 설정된 자릿수에 맞는지 검증하도록 로직을 수정했다. 이를 통해 자릿수에 맞는 입력만 받아들일 수 있도록 처리했다.

protected String validateInput(int input, List<Integer> inputList, int digitLength) {
    inputList.clear(); // 기존 입력값 초기화

    int min = (int) Math.pow(10, digitLength - 1); // 자릿수에 따른 최소값
    int max = (int) Math.pow(10, digitLength) - 1; // 자릿수에 따른 최대값

    if (input < min || input > max) {
        return "자릿수x"; // 자릿수 오류 메시지 반환
    }

    for (int i = digitLength - 1; i >= 0; i--) {
        inputList.add(input / (int) Math.pow(10, i) % 10);
    }

    if (new HashSet<>(inputList).size() < digitLength) {
        return "중복"; // 중복된 숫자가 있는 경우 처리
    }

    return "정상"; // 입력값이 정상적인 경우
}

트러블 슈팅 요약

  • 자릿수 설정 후 자동으로 게임이 시작되도록 구현했다.
  • 자릿수에 따라 입력 검증이 동적으로 처리되도록 수정했다.

이로써 숫자 야구 게임 Lv4까지 완성되었으며, 게임의 흐름과 구조가 한층 더 안정적이고 직관적으로 개선되었다. 🎉


https://github.com/coldrice99/NumberBaseballGame.git

profile
서두르지 않으나 쉬지 않고

0개의 댓글