Activities/우아한 테크 프리코스

[회고록] 우아한테크 프리코스 회고록2-1

발달중인 망고 2023. 11. 2. 00:01

작성일 10월 27일 오전 02:09 (2주차 미션이 끝나고 올라가도록 예약된 게시글입니다.)

 

오늘은 1주 차 피드백을 수용하기 위해 26일 하루는 온전히 기능목록 작성에 힘을 쏟았습니다.

 

이번 미션은 레이싱 게임이였습니다!

 

https://github.com/woowacourse-precourse/java-racingcar-6

 

GitHub - woowacourse-precourse/java-racingcar-6

Contribute to woowacourse-precourse/java-racingcar-6 development by creating an account on GitHub.

github.com

# 자동차 경주 게임

## 기능 목록

- 사용자 Car 입력 (첫 입력)
    - [ ] 입력문을 출력한다.
    - [ ] N개의 car 생성한다. 구분은 , 로 한다.
        - 예외처리
        - [ ] 이름의 길이가 5 이상인지 확인한다.
        - [ ] 중복되는 이름이 있는지 체크한다.
        - [ ] NULL 혹은 공백이 있는지 처리한다.


- 사용자 loop 입력 (두번째 입력)
    - [ ] 사용자는 자동차의 전진가능횟수(loop)를 입력한다.
        - 예외처리
        - [ ] 사용자의 입력이 0인지 체크한다.
        - [ ] 숫자외에 다른것이 들어왔는지 체크한다.
    - [ ] 입력을 정수로 저장한다.


- loop 마다 자동차의 이동 판별 (게임의 동작)
    - [ ] 자동차마다 0~9의 난수를 생성한다
    - [ ] 생성된 난수가 4이상일 때 한칸 전진시킨다.
    - [ ] loop 마다 실행 결과를 출력한다.
    - [ ] 게임이 끝나면 출력으로 넘어간다.


- 우승자 출력 (게임 종료)
    - [ ] 공동 우승자를 판별 한다.
    - [ ] 우승자를 판별해 출력한다.

## 모델별 기능 목록

MVC 모델을 도입함에 있어서 Model마다의 기능을 정의한다.

### `Car` 경주 자동차

- [ ] 자신의 이름을 갖고 있는다.
- [ ] 현재 자신의 위치를 갖고 있는다.
- [ ] 전진을 판단한다.

### `RacingCars` 자동차를 모두 관리

- [ ] 자동차들을 모두 저장하여 관리한다.
- [ ] 특정 자동차를 반환함.

### `Referee` 우승자 판별

- [ ] 우승자를 판별해준다.
- [ ] 공동 우승자를 판별해준다. ( , 를 통해)

# 기능 플로우 차트

<img src="https://github.com/dltjdgh0428/java-racingcar-6/assets/33485494/992de61a-8290-4118-a3a5-cf89d475a0ea"/>

기능목록은 이런 식으로 작성을 해봤는데 주요 기능 목록과 이전에 중요성을 느꼈던 Model을 구체화하기 위해 Model별로 기능 목록을 하나 더 작성해서 설계의 모호함을 피하고 싶었습니다.

어쩌면 중복될 수 있겠지만 저 같은 초보자에게는 알맞은 방법이라고 판단했습니다.

추가적인 것은 기능 플로우차트를 만들어서 한 번에 볼 수 있도록 했다는 점인데요. 좋은 것 같습니다.

앞으로 3주 차 4주 차에도 많은 피드백을 수용해서 제 실력을 올리고자 합니다.

 

기능목록작성 외에도 그동안 쌓아놨던 레퍼런스와 주위사람들의 회고록, 코드리뷰를 통해 다양한 경험을 한 하루였습니다.

 

다들 끝까지 파이팅 하시기 바랍니다!