- 숫자는 1~9까지다.
- 서로 다른수 3자리 숫자 이여야한다.
- 게임 룰
- 같은 수가 같은 자리에 있으면 스트라이크
- 다른 자리에 있으면 볼
- 전혀 없으면 낫싱
- 컴퓨터는 서로 다른 3개의 숫자를 랜덤으로 받아온다.
- 3개의 숫자를 모두 맞추면 게임이 종료된다.
- 게임이 종료 됐을경우 다시 시작하거나 완전히 종료할 수 있다.
- 재시작은 1, 종료는 2
- 사용자가 잘못된 값을 입력할 경우 IllegalArgumentException 발생시키고 종료된다.
- 출력 시 볼은 스트라이크 앞에 있어야 한다.
Computer 클래스는 오직 컴퓨터 번호를 랜덤으로 가져오는 역할 => 인터페이스로 Generate??? 만들어도 될듯 PlayerNumber 클래스는 오직 플레이어의 번호를 저장하는 역할 Computer, PlayerNumber은 GameResult 클래스에서 스트라이크와 볼의 개수를 달라고 함. GameResult에서 받은 값을 OutputView에서 다시 받아 출력. => 바로 OutputView로 해도 될듯 만약 3스트라이크가 나오면 {3스트라이크 출력문}을 출력하고, 다시할건지 끝낼건지 InputView 에서 숫자 입력. Retry클래스는 InputView에서 값을 받아 오직 시작할건지 끝낼건지 판단하는 역할. 만약 1을 입력했을때, 첫 시작 메세지를 제외하고 다시 시작. 그럼 Game클래스는 무엇일까... 전반적인 게임 플레이 담당? 흐름 제어..?
Game 클래스에서 Computer, PlayerNumber 클래스 한테 숫자를 달라는 메세지 요청 => InputView말고 각자의 클래스에서 만드는게 나아보임. 두개의 숫자를 받고 그 결과를 판단해 달라고 GameResult에 요청(판단만) => 그 결과 값을 OutputView에 요청 그러다 3스트라이크가 나오면 InputView에 요청해서 retry 숫자 요청. 전달 받고 1이면 첫 시작 문구 제외 다시 시작...
각자 Computer, PlayerNumber, Retry에는 값을 자기가 가지고 있어야함. 그 값을 가지고 요청