✔ 과정에 대한 전반적인 회고
- 본 미션을 통해 테스트 코드의 작성법과 TDD에 대해 학습할 수 있었다.
- 코드 컨벤션을 지키고, git commit message의 작성법을 배울 수 있었다.
- Clean code를 작성하는 방법을 익히고, 메소드를 분리하는 리팩토링 과정을 깨달을 수 있었다.
String, Collection의 테스트 학습을 통해 테스트 코드 작성을 익힌다.
구현하는 코드에 단위 테스트를 적용하는 방법을 익힌다.
3단계 기능 요구사항
- 초간단 자동차 경주 게임을 구현한다.
- 주어진 횟수 동안 n대의 자동차는 전진 또는 멈출 수 있다.
- 사용자는 몇 대의 자동차로 몇 번의 이동을 할 것인지를 입력할 수 있어야 한다.
- 전진하는 조건은 0에서 9 사이에서 random 값을 구한 후 random 값이 4이상일 경우이다.
- 자동차의 상태를 화면에 출력한다. 어느 시점에 출력할 것인지에 대한 제약은 없다.
3단계 체크리스트
-
자동차 기능
- 자동차는 자신이 전진한 횟수를 가진다.
- 자동차는 조건에 따라 전진하거나 멈출 수 있다.
- 자동차 집합은
인자로 주어진 수만큼의 자동차 리스트와, 시도할 횟수를 가진다. -> 자동차리스트를 수정주입, 생성관할은 팩토리에서 진행 - 자동차 집합은 자동차 리스트들이 전진한 횟수를 확인할 수 있다.
- 자동차 집합은 시도 횟수만큼 보유중인 자동차 리스트에게 전진할지 여부를 확인한다.
-
입출력 관련
- 자동차 수와 시도할 횟수를 입력받는다.
- 전진한 횟수의 배열을 넘겨받아 실행결과를 출력한다.
-
게임과 게임 팩토리
- 게임은 자동차경주의 실행과 종료를 관할한다. (입출력)
- 게임은 입력받은 값을 게임 팩토리에게 넘겨서 자동차와 자동차들을 생성한다.
- 게임 팩토리는 게임, 자동차들, 자동차의 생성을 주관한다.
3단계 피드백
[피드백 링크] (next-step#2030)
4단계 요구사항
- 각 자동차에 이름을 부여할 수 있다. 자동차 이름은 5자를 초과할 수 없다.
- 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다.
- 자동차 이름은 쉼표(,)를 기준으로 구분한다.
- 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한명 이상일 수 있다.
4단계 체크리스트
- 자동차 기능 및 생성
- 각 자동차는 고유의 이름을 가질 수 있다.
- 자동차 집합은 고유의 이름을 가진 자동차들로 구성된다.
- 우승자 결정
- 심판은 게임이 보유중인 자동차 집합중에서 우승자를 가린다.
- 전진한 횟수들 중에서 가장 많이 전진한 수를 구한다.
- 가장 많이 전진한 횟수를 보유한 자동차 이름을 우승자로 선정한다.
- 입출력
- 자동차 이름을 입력받는다.
- 실행 결과를 각 자동차의 이름들과 함께 전진한 정도를 출력한다.
- 우승자를 출력한다.