반응형
2주 차 미션 - 자동차 경주 (내 코드)
https://github.com/junseoparkk/java-racingcar-6/tree/junseoparkk
[1] 요구 사항
1주 차의 목표는 git, Java, 미션 사이클에 익숙해지는 것이었다. 또한 요구 사항을 통해 기능 목록을 도출하고, 작성한 목록에 따라 개발하는 연습을 했다. 처음엔 기능 목록을 어떻게 작성해야 할지, 어떤 내용을 넣어야 할지 고민하느라 많은 시간이 걸렸다. 실제로 기능 요구 사항에 명시되어 있지 않은 내용은 스스로 판단하여 작성했다. 예를 들어 자동차의 이름, 최대 자동차 수, 최대 게임 수 등을 제한하여 기능 목록을 차근차근 작성해 나갔다.
아래는 최종적으로 작성된 기능 목록이다. 테스트 목록도 작성하였는데, 이는 기능 목록에서 입, 출력을 제외한 대부분의 목록과 동일하다. 체크 박스를 만들어 커밋시 구현한 기능인지, 어떤 기능을 구현해야 하는지 헷갈리지 않도록 했다. 그리고 많은 도움이 되었다.
## 기능 목록
### 무작위 숫자 생성 기능
- [X] 0~9사이의 무작위 숫자를 반환한다.
### 자동차 기능
- [X] 자동차 이름 유효성 검사 기능
- [X] 이름은 1~5 글자여야 한다.
- [X] 이름은 공백 없이 한글 또는 영어로만 이루어져 있어야 한다.
- [X] 이름은 중복되면 안 된다.
- [X] 위 조건에 맞지 않는다면 `IllegalArgumentException` 발생
- [X] 자동차 이동 기능
- [X] 선택한 숫자가 0~3 사이면 정지
- [X] 선택한 숫자가 4~9 사이면 전진
### 게임 기능
- [X] 게임을 세팅한다.
- [X] 게임을 진행한다.
- [X] 라운드별로 무작위 숫자를 부여한다.
- [X] 라운드별로 경주를 진행한다.
- [X] 무작위 숫자를 통해 자동차를 움직인다.
- [X] 라운드별로 결과를 반환한다.
- [X] 게임 우승자를 반환한다.
### 우승자 판별 기능
- [X] 게임이 끝난 뒤 우승자를 판별한다.
- [X] 우승자는 가장 멀리 이동한 자동차 이름이다.
- [X] 우승자는 한 명 또는 여러 명일 수 있다.
- [X] 한 명일 경우 이름만 반환
- [X] 여러 명일 경우 쉼표(,)로 구분하여 반환
### 입력 기능
- [X] 사용자로부터 자동차 이름을 입력 받는 기능
- [X] 입력은 공백이면 안 된다.
- [X] 자동차 이름은 쉼표(,)로 구분할 수 있어야 한다.
- [X] 자동차 이름은 최대 5대까지 입력할 수 있어야 한다.
- [X] 위 조건에 맞지 않는다면 `IllegalArgumentException` 발생
- [X] 사용자로부터 게임 횟수를 입력 받는 기능
- [X] 입력은 공백이면 안 된다.
- [X] 횟수는 숫자여야 한다.
- [X] 횟수는 1~10 사이여야 한다.
- [X] 위 조건에 맞지 않는다면 `IllegalArgumentException` 발생
### 출력 기능
- [X] 자동차 이름 입력 요청 메시지 출력 기능
- [X] 게임 횟수 입력 요청 메시지 출력 기능
- [X] 실행 결과 출력 기능
- [X] 우승자 이름 출력 기능
반응형