숫자야구 게임은 컴퓨터가 생성한 서로 다른 3자리 숫자를 플레이어가 맞히는 게임입니다. 플레이어의 입력에 대해 스트라이크(Strike) 와 볼(Ball) 개수를 판정하며, 3 스트라이크가 되면 게임이 종료됩니다.
- 게임 전체 흐름과 Phase 전환을 관리
- 사용자 입력 검증 및 재입력 루프 처리
역할
- 게임에서 사용할 숫자 생성
규칙(현재 구현 기준)
- 숫자 범위: 1 ~ 8
- 생성 개수: 3개
- 모든 숫자는 서로 달라야 함
역할
- 사용자 입력값과 생성된 숫자를 비교하여 결과 판정
판정 내용
- 스트라이크(Strike) 개수
- 볼(Ball) 개수
- 스트라이크 + 볼 = 0 인 경우
낫씽출력
역할
- 콘솔에서 사용자 입력 수신 (
Scanner.next()사용)
역할
- Phase 시작 메시지, 에러 메시지, 판정 결과 출력
- 프로그램은
GENERATE_NUMBERPhase에서 시작 - 최초 실행 시 시작 안내 메시지는 출력되지 않고 바로 숫자 입력을 요청
설명
- 게임 시작 시 숫자를 생성하는 Phase
동작
NumberGenerator.generateNumber()로 숫자 생성- 생성 후
INPUT_NUMBERPhase로 이동
설명
- 사용자로부터 숫자를 입력받는 Phase
검증 조건
- 입력 길이가 3인가?
- 모든 입력이 1 ~ 9 사이의 숫자인가?
- 모든 입력 값이 서로 다른가?
분기 처리
- 입력이 적절한 경우
- 입력값 저장
JUDGE_RESULTPhase로 이동
- 입력이 부적절한 경우
- 에러 메시지 출력
INPUT_NUMBERPhase 유지
설명
- 입력값을 판정하고 결과를 출력하는 Phase
분기 처리
- 결과가 3 Strike인 경우
- 축하 메시지 출력
IDLEPhase로 이동
- 그 외의 경우
- 결과 출력
INPUT_NUMBERPhase로 이동
설명
- 게임을 새로 시작하거나 종료를 선택하는 Phase
분기 처리
1입력:GENERATE_NUMBERPhase로 이동 (새 게임)2입력: 프로그램 종료- 그 외 입력: 에러 메시지 출력 후 재입력
- 입력 요청:
숫자를 입력해주세요 : - 잘못된 숫자 입력:
1 ~ 9 사이의 중복되지 않는 세 자리 숫자를 입력해주세요. - 게임 재시작/종료 선택:
게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요. - 정답:
3개의 숫자를 모두 맞히셨습니다! 게임 끝
IDLEPhase에서2를 입력하면 프로그램 종료