야구게임 만들기 (트러블 슈팅)

김재우·2025년 3월 20일

문제 상황

발생 일시: 2025-03-20

발생 환경: Xcode 16.2, Command Line Tool 사용

기능: 야구게임

문제 내용:

  • LV2 단계: 0이 포함된 숫자는 "올바르지 않은 입력값"으로 처리
  • LV3 단계: 정답(answer)이 0을 포함할 수 있지만, 첫 번째 자리에는 0이 오면 안 됨
  • 그러나 정답이 0을 포함하고 있을 때도 "올바르지 않은 입력값"이 출력되는 문제가 발생함.

원인 분석

  1. 입력을 받을 때 inputArray.contains(0) 조건을 사용하여 숫자에 0이 포함되면 무조건 오류 처리하도록 설정되어 있음.
if Set(inputArray).count != 3 || inputArray.contains(0) {
                    print("올바르지 않은 입력값입니다")
                    continue

문제점:

  • inputArray.contains(0) 때문에 첫 번째 숫자가 아니어도 0이 포함되면 오류 처리됨.
  • 하지만 LV3에서는 0이 포함될 수 있어야 하므로 조건을 수정해야 함.
  1. 정답을 생성할 때 첫 번째 자리 숫자가 0이 될 수 있는 문제가 있음.
 var answer = [Int]()
        answer.append(Int.random(in: 0...9))
        answer.append(Int.random(in: 0...9))
        answer.append(Int.random(in: 0...9))

문제점:

  • 첫 번째 숫자가 0이 나올 가능성이 있음.
  • 첫 번째 자리만 1~9 범위로 제한해야 함.

해결 과정

  1. 입력값 예외 처리 수정
if Set(inputArray).count != 3 || inputArray[0] == 0 {
                    print("올바르지 않은 입력값입니다")
                    continue
  • inputArray.contains(0)inputArray[0] == 0 으로 수정
  • 첫 번째 숫자가 0일 때만 예외 처리하도록 변경
  1. 정답 생성 로직 수정
 var answer = [Int]()
        answer.append(Int.random(in: 1...9))
        answer.append(Int.random(in: 0...9))
        answer.append(Int.random(in: 0...9))
  • 첫 번째 숫자는 1~9, 나머지는 0~9로 설정

결과

  • 정답(answer)에서 첫 번째 자리는 0이 나오지 않도록 정상적으로 구현됨

  • 입력값을 받을 때 0이 포함되어 있어도 첫 번째 자리가 아니라면 게임 진행 가능

  • 정상 동작 확인!

profile
iOS 스타터 6기

0개의 댓글