- 자동차 경주 게임 요구사항을 파악한다.
- 요구사항에 대한 구현을 완료한 후 자신의 github 아이디에 해당하는 브랜치에 Pull Request(이하 PR)를 통해 코드 리뷰 요청을 한다.
- 코드 리뷰 피드백에 대한 개선 작업을 하고 다시 PUSH한다.
- 모든 피드백을 완료하면 다음 단계를 도전하고 앞의 과정을 반복한다.
##프로그래밍 요구사항
- 모든 로직에 단위 테스트를 구현한다. 단, UI(System.out, System.in) 로직은 제외
- 핵심 로직을 구현하는 코드와 UI를 담당하는 로직을 구분한다.
- UI 로직을 InputView, ResultView와 같은 클래스를 추가해 분리한다.
- 자바 코드 컨벤션을 지키면서 프로그래밍한다.
- else 예약어를 쓰지 않는다.
- 힌트: if 조건절에서 값을 return하는 방식으로 구현하면 else를 사용하지 않아도 된다.
- else를 쓰지 말라고 하니 switch/case로 구현하는 경우가 있는데 switch/case도 허용하지 않는다.
- 입력은 자동차의 수, 이동 횟수
- 출력 시점은 정해져 있지 않으며, 라인에 따라 '-'으로 나타낸다.
- 자동차는 무작위 결과에 따라 이동할 수도, 가만히 있을 수도 있다.
- 입력
- InputView 클래스에서 자동차의 수와 이동 횟수를 입력 받는다.
- 자동차의 수, 움직임의 수를 각각 정수로 입력
- 음수, 정수가 아닌 문자, null 등 validation 처리
- 출력
- 자동차의 실시간 위치 출력한다.(자동차 객체에 저장된 위치를 가져와서 출력)
- ResultView 클래스에서 자동차가 이동하는 라인을 출력한다.
- 자동차
- 위치 정보(현재 위치 및 이동한 위치 저장한다.)
- 이동 기능(현재 위치에서 이동한다.)
- 무작위로 이동(0 ~ 9사이 랜덤 값을 구한 후 랜덤 값이 4이상일 경우에 이동한다.)
- 이동 경로를 생성(이동할 때 마다 이동 경로 문자열을 생성하여 저장한다.)
- 전진 또는 멈출지 선택한다.