요구사항 분석
- 게임의 참여자는 Player이다.
- 상대방은 Computer이다.
- Computer는 1~9까지 서로 다른 숫자 3개를 선택한다.
- Player는 자신이 생각한 정답으로 서로 다른 숫자 3개를 입력한다.
- Computer는 해당 입력을 바탕으로 결과를 알려준다.
- Computer의 숫자와 같은 값, 같은 자리에 있다 → 스트라이크
- Computer의 숫자와 같은 값이지만, 다른 위치에 있다 → 볼
- 3스트라이크가 나오면 정답을 맞추게 되고 게임을 종료한다.
- 게임이 종료된 후에 Player는 게임을 재시작하거나, 완전히 종료할 지 선택할 수 있다.
도메인(Domain)
Game Controller
역할: 게임의 진행 여부를 Controller 하는 클래스, 게임의 시작과 재시작을 관리한다.
- [ ]
initNumberBaseBallGame()
: 게임 시작 요청을 받으면 안내 메시지를 출력하고 게임 시작을 한다.
- [ ]
initGame()
: 게임 시작 전 게임에 참여 Player와 Computer를 생성하고 두 참가자로 게임을 시작한다.
- [ ]
restartGame()
: Player의 요청을 전달 받아 재시작 여부를 판단한다. 요청 값이 1이면 재시작한다.
- 재시작 →
initGame()
;
- game → player.askRestart → Controller.restart
- 종료 → 아무것도 안함.
NumberBaseballGame
역할: 메인 게임, 참가자인 Player와 Computer를 상대로 숫자 야구 게임을 진행함. (이하 숫자 야구 게임은 ‘게임’이라 칭함.)