🏕 내일배움캠프/[Assignment] Ch2-2

[Ch 2][숫자 야구 게임] 5. 설계 (3) - 도전 기능(Lv 3)

레이제로 2024. 9. 25. 09:46

2. 설계

 A. 객체 간 데이터 흐름과 관계도 & 객체의 역할

객체 간 데이터 흐름 및 관계도 & 객체의 역할

 B. 기능 분해

  1. 정답 숫자 생성
    • 세 자릿수
    • 각 자리는 1부터 9 사이의 수
    • 각 자리는 동일하지 않는(중복되지 않는) 수
  2. 입력의 유효성 검사
    • 세 자리 수인가요? → 자릿수 검사
    • 중복된 숫자가 없나요? →  중복 숫자 검사
    • 입력값에 숫자만 포함되어 있나요? → 타입 검사
    • 게임 진행 옵션에 포함되는 입력이 들어왔나요? → 유효성 검사
  3. 게임 기록 통계
    • 해당 게임이 몇 번째 게임인지
      • 해당 게임에서 정답을 맞힐 때까지의 시도 횟수
  4. 게임 로직 (1) - [Lv 1]
    • 정답과 입력값을 비교하여, 힌트를 “볼, 스트라이크, 아웃”으로 표시합니다.
      • 스트라이크 : 입력값과 정답을 비교해 같은 자리에 같은 숫자가 있는 경우
      • 볼 : 숫자는 같지만, 자리는 다른 경우
      • 아웃 : 숫자도, 자리도 다른 경우
    • 답을 맞힐 때까지 계속 시도할 수 있습니다.
    • 입력한 세 자리 숫자가 정답과 같은 경우, 게임이 종료됩니다.
  5. 게임 로직 (2) - [Lv 2]
    • 프로그램을 시작할 때, 안내문구를 출력합니다.
      • 1을 입력하면, Lv 1의 게임 로직처럼 게임이 진행됩니다.
      • "2. 게임 기록 보기”는 Lv 3에서 제시됩니다. 아직 구현하지 않습니다.
      • 3을 입력하면, 게임이 종료됩니다.
    • 정답을 맞히는 경우, 프로그램 시작할 때의 안내문구를 다시 출력합니다.
  6. 게임 로직 (3) - [Lv 3]
    • Lv 2의 게임 로직과 동일하며, "2. 게임 기록 보기"가 추가됩니다.
      • 2를 입력하면, 게임의 시도 횟수를 출력합니다.
    • 게임이 끝났을 때, 총 시도 횟수를 출력합니다.
    • 플레이어가 정답을 맞힐 때까지의 시도 횟수를 기록하고 게임이 끝났을 때, 총 시도 횟수를 출력합니다.
  7. 출력
    • 게임 시작 안내 문구 및 옵션
      1. 게임 시작하기
      2. 게임 기록 보기
      3. 종료하기
    • 게임 시,
      • 힌트 표시
        • '스트라이크'와 '볼'의 개수
      • 정답 맞히면,
        1. 정답 표시 : 축하 메시지
        2. 정답을 맞힐 때까지의 총 시도 횟수
      • 게임 이어서 하기
        • 정답을 맞힐 때까지 계속해서 시도할 수 있습니다.
    • 게임 기록 보기
      • 몇 번째 게임인지, 해당 게임에서 정답을 맞힐 때까지의 시도 횟수
    • 올바르지 않은 입력값에 대한 오류 문구