- 1부터 9까지 서로 다른 수로 이루어진 3자리의 수를 맞추는 게임입니다.
- 같은 수가 같은 자리에 있으면
스트라이크 - 다른 자리에 있으면
볼 - 같은 수가 전혀 없으면
낫싱이란 힌트를 얻습니다.
- 같은 수가 같은 자리에 있으면
- 힌트를 이용해서 먼저 상대방의 수를 맞추면 승리합니다.
- 상대방의 역할은 컴퓨터가 합니다.
- 컴퓨터는 1에서 9까지 서로 다른 임의의 수 3개를 선택합니다.
- 플레이어는 컴퓨터가 생각한 3개의 숫자를 입력, 컴퓨터는 입력한 숫자에 대한 결과를 출력합니다.
- 이 과정을 반복해 컴퓨터가 선택한 3개의 숫자를 모두 맞히면 게임이 종료됩니다.
- 게임을 종료한 후 게임을 다시 시작하거나 완전히 종료할 수 있습니다.
- 사용자가 잘못된 값을 입력할 경우
[ERROR]로 시작하는 메시지를 출력하고, 게임을 계속 진행할 수 있어야 합니다.
- 자바 코드 컨벤션: https://naver.github.io/hackday-conventions-java/
- indent depth가 3이 넘지 않도록 구현 (예를 들어 while문 안에 if문이 있으면 들여쓰기는 2임)
- 자바 8에 추가된 Stream API를 사용하지 않고 구현 (단, 람다는 사용 가능)
- else, switch/case 예약어를 쓰지 않음 (if 조건절에서 값을 return하는 방식으로 구현)
- 메서드의 길이가 15라인을 넘어가지 않도록 구현 (한 가지 일만 잘 하도록 구현)
- 도메인 로직에 단위 테스트를 구현 (단, UI(System.out, System.in, Scanner) 로직은 제외)
- 핵심 로직을 구현하는 코드와 UI를 담당하는 로직을 분리해 구현
- MVC 패턴 기반으로 구현한 후 View, Controller를 제외한 Model에 대한 단위 테스트를 추가
- JUnit5 기반 단위 테스트를 구현
숫자를 입력해주세요 : 123
1스트라이크 1볼
숫자를 입력해주세요 : 145
1볼
숫자를 입력해주세요 : 671
2볼
숫자를 입력해주세요 : 216
1스트라이크
숫자를 입력해주세요 : 713
3스트라이크
3개의 숫자를 모두 맞히셨습니다! 게임 끝
게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요.
1
숫자를 입력해주세요 : 123
1볼
...
- MIT License