- 플레이어는 컴퓨터가 임의로 정한 3자리 수를 숫자와 자리까지 정확하게 맞춰야 한다.
- 컴퓨터는 플레이어가 입력한 숫자에 따라 결과를 출력한다.
- 볼
- 같은 수가 다른 자리에 있는 경우
- 스트라이크
- 같은 수가 같은 자리에 있는 경우
- 낫싱
- 같은 수가 전혀 없는 경우
- 볼
- 플레이어가 정답을 맞추면 게임이 종료되며, 플레이어가 원하는 경우 새로운 게임을 시작할 수 있다.
Game을 생성하여 초기화 및 (재)시작 시킨다.
- 게임 초기화
- 새로운 게임을 위해
Game의 상태를 초기화 시킨다.
- 새로운 게임을 위해
- 게임 시작
- 새로운 게임을 플레이 시킨다.
- 게임 재시작/종료 안내
- 게임 한 턴이 종료된 후 플레이어에게 재시작/종료 여부를 입력받아 게임을 재시작/종료 시킨다.
- 게임 재시작/종료 안내 메시지는 다음과 같다.
게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요. :
게임 프로세스를 정의한 로직을 수행한다.
- 숫자 입력 안내
- 플레이어에게 숫자를 입력받는다.
- 입력 안내 메시지는 다음과 같다.
숫자를 입력해주세요 :
- 볼/스트라이크 카운터 호출
Computer를 통해 볼과 스트라이크 개수를 카운트 한다.
- 결과 메시지 출력
Computer가 판단한 결과에 따라 메시지를 출력한다.- 결과 메시지는 다음과 같다.
- 예시1 :
1볼 2스트라이크 - 예시2 :
낫싱
- 예시1 :
- 정답 숫자 생성
- 1부터 9까지 서로 다른 수로 이루어진 3자리 수를 랜덤으로 생성한다.
- 볼/스트라이크 카운터 정의
- 볼과 스트라이크를 개수를 카운트하는 로직을 정의한다.
플레이어의 입력값을 받고 검증한다.
- 정답 숫자 입력 받기
- 플레이어로부터 숫자들을 입력받는다.
- 게임 재시작/종료 여부 입력 받기
- 입력값 검증
Validator를 통해 플레이어가 입력한 입력값이 게임의 규칙에 벗어나지 않는지 검증한다.- 정답 숫자 입력 시 다음을 검증한다.
- 입력 데이터 타입(숫자)
- 입력 숫자 개수(3개)
- 중복 여부
- 숫자 범위(0 이상 9 이하)
- 게임 재시작/종료 여부 입력 시 다음을 검증한다.
- 숫자 범위(1:재시작 / 2:종료)
- 잘못된 입력값인 경우
IllegalArgumentException을 발생시킨다.
플레이어의 입력값을 검증할 로직을 정의한다.
InputReceiver에서 입력값 검증 시 활용한다.
플레이어의 입력값을 Integer 리스트로 변환시킬 유틸 함수를 정의한다.
InputReceiver에서 입력값 타입 변환 시 활용한다.
게임 재시작/종료 메시지와 출력 함수를 정의한다.
GameController에서 게임 재시작/종료 안내시 활용한다.
숫자 입력 및 정답 메시지와 출력 함수를 정의한다.
Game에서 숫자 입력 및 정답 안내 시 활용한다.
게임에서 정의하고 있는 룰에 따라 사용될 상수들을 정의한다.