- 숫자 야구 게임 요구사항을 파악한다.
- 요구사항에 대한 구현을 완료한 후 자신의 github 아이디에 해당하는 브랜치에 Pull Request(이하 PR)를 통해 과제를 제출한다.
- 1~9까지 서로 다른 3자리 수 생성 : NumberBox
- 투수 : 서로 다른 3자리 난수 박스 생성
- 타자 : 입력 받은 숫자로 박스 생성
- 배팅 결과(strike-ball-nothing) 판별 : Swing
- STRIKE : 같은 위치, 같은 값
- BALL : 다른 위치, 같은 값
- NOTHING : 같은 위치, 같은 값
- 플레이어(투수, 타자)객체 생성 : Pitcher & Batter
- 스윙 결과 객체 생성 : ResultBoard
- 게임 실행 클래스 구현
- 실행 목록 정의
- 게임 시작
- 투수 생성 - 컴퓨터
- 타자 생성 - 유저
- 타자 숫자 입력
- 숫자 검증(스윙 결과)
- 아웃 판별
- 종료(exit)/재시작(2~4 반복) => state 패턴 적용
- 게임 시작
- 실행 목록 정의
- 리팩토링
- 투수 객체 생성
- 플레이어 이름 입력
- 1~9까지 서로 다른 3자리 수 생성
- 타자 객체 생성
- 플레이어 이름 입력
- 게임 시작
- 타자는 1~9까지 서로 다른 3자리 수 입력
- 3개의 숫자 및 위치를 모두 맞히면 게임 종료 (3 strike -> out)
- 3 STRIKE 가 되지 않는 경우 1~2를 반복
- 객체 설계
-
투수 - Pitcher
- 플레이어 이름
- 1~9까지 서로 다른 3자리 수(자동 생성)
- numberBox 생성
-
타자 - Batter
- 플레이어 이름
- 1~9까지 서로 다른 3자리 수(사용자 입력)
- numberBox 생성
-
번호 생성(1-9) - NumberBox
- 1~9까지 서로 다른 3자리 수
- 인덱스
- 값
- 예외처리
- 빈값 입력 불가
- 3자리 이상 불가
- 같은 숫자 입력 불가
- 1~9까지 서로 다른 3자리 수
-
결과 보드판 생성 : ResultBoard
- Map 활용
- Key : 입력 값
- Value : Swing 결과
-
배팅 결과 - Batting
- 스트라이크 : 같은 자리, 같은 수
- 볼 : 다른 자리, 같은 수
- 낫싱 : 다른 자리, 다른 수
- enumeration(strike, ball, nothing) 통한 결과 로직 관리
- 결과 보드판을 바탕으로 스윙 결과 전달
-
/*
<최종 실행 흐름>
1. 투수 객체 생성
- 숫자 자동 생성
2. 타자 객체 생성
3. 타자 스윙(숫자 입력)
4. 타자 배팅 결과
5. 결과 보드판(GameResult) 갱신
6. 아웃 여부 판별
7. 종료/재시작
아웃 아닌 경우 -> 3~6 반복
아웃인 경우 -> 종료/재시작(7)
*/
- 디자인 패턴
- (행동 패턴)state pattern : 다를 경우 계속 실행, 아닌 경우 종료 (ON/OFF)