Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[자동차 경주] 곽상진 미션 제출합니다. #94

Open
wants to merge 30 commits into
base: main
Choose a base branch
from

Conversation

DDangDin
Copy link

@DDangDin DDangDin commented Oct 28, 2024

  • 입출력 기능
    • 입력
      • 자동차 이름들을 입력 받고 쉼표(,)를 기준으로 구분한다.
      • 사용자는 몇 번의 이동을 할 것인지를 입력할 수 있어야 한다.
    • 출력 (실행 결과와 우승자 이름 출력은 기능 속에 포함)
      • 게임 시작전 출력할 문구 (이름 입력, 시도할 횟수 입력받는 부분)

  • 자동차 속성
    • 자동차라는 객체가 필요하고 자동차는 이름이라는 속성을 가지고 있다.
    • 이름이라는 속성은 5자 이하만 가능하다.

  • 자동차 행위 (주어진 횟수 동안 n대의 자동차전진 또는 멈출 수 있다.)
    • 자동차는 전진, 멈춤 이라는 행위를 가지고 있다.
    • 주어진 횟수 동안 행위들을 수행한다.

  • 전진 행위
    • 전진하는 조건은 0에서 9 사이에서 무작위 값을 구한 후 무작위 값이 4 이상일 경우이다.
    • 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다.
  • 멈춤 행위
    • 따로 명시하지 않고 전진하지 않으면 멈춤으로 정의

  • 자동차 경주 게임 (자동차 경주 게임을 시작하고 종료가 되면 우승자를 출력한다.)
    • 자동차 경주 게임 시작
    • 우승자를 출력한다. 우승자는 여러 명일 수 있다.
    • 우승자가 여러 명일 경우 쉼표(,)를 이용하여 구분한다.

  • 예외처리
    • 사용자가 잘못된 값을 입력할 경우 IllegalArgumentException 을 발생시킨 후 애플리케이션은 종료되어야 한다.

- 자동차 이름을 입력 받고 쉼표(,)로 구분
- 시도할 횟수를 입력 받고 정수형으로 변환
- 게임 시작 전 입력받고 문구 출력하는 기능을 RacingCarSetup 클래스에 캡슐화
- 시도할 횟수가 숫자가 아니라면 예외 발생하게 구현
- NsTest 코드를 복사해서 입맛에 맞게 수정
- RacingCarSetupTest 에서 NsTestCopy 사용
- indent depth가 3이 넘지 않도록 수정
- 자동차 클래스 생성
- 자동차에 이름 부여
- 이름 예외처리
- 자동차 객체는 전진하거나 멈출 수 있지만 실질적으로 관여하는 메서드는 1개이다.
(전진할 때 메서드: moveForward, 멈출 때: 아무 작업 X)
- 자동차 클래스에서 moveForwardAndStop 메서드는 인자 값을 판단하여 전진하거나 멈추거나 결정한다.
- 기타 사항1: 자동차 이름 5자 이상일 때 예외처리
- 기타 사항2: README.md 자동차 행위 기능 업데이트
- CarTest 추가하면서 Car 클래스에서 canMoveForward 메서드 부등호 조건 변경
- RacingCarGame 클래스를 추가하고 무작위 숫자를 얻어서 자동차를 움직이게끔 까지 구현
- 게임 진행 시 자동차의 이름과 전진 표시를 출력하는 기능 구현
- 게임이 진행되는 순간마다 자동차 이름과 점수를 Map에 저장해서 가장 높은 점수인 사람이 우승자가 되도록 구현
- 여러 명일 경우 쉼표(,)로 구분해서 출력
- 게임 진행 시 진행 문구 출력 추가
- rebase 하면서 삭제된 자동차 이름 예외 처리를 추가
- 자동차 이름을 각각 확인 하면서 예외 처리 하게끔 수정
- 자동차 이름 예외 테스트 추가
- 테스트 데이터 동반객체로 분리
- RacingCarGame에서 필요한 값을 RacingCarSetup에서 가져온다.
- 문자열 리스트에서 Car 객체로 매핑해주는 함수 추가
- 프로퍼티가 하나라면 한 줄에 작성하도록 수정
- 클래스 메서드 위치를 로직 이해하기 쉬운 순으로 수정
- 최종 우승자 텍스트 추가
- 실행결과 텍스트 출력 전 줄넘김 추가
- 패키지 자체가 racingcar 이니까 접두어 RacingCar는 제외한 상태로 수정
- 행위(메서드) 명 명확하도록 수정
- 상수 값 동반객체로 관리
- 클래스명을 Initializer 로 수정
- 역할에 맞게 메서드 명 수정
- 역할에 맞게 메서드를 작게 분리
- 통일성을 위해 속성명 수정 (tryCount -> gameCount)
- 클래스 수정에 따라 Application 수정
- 역할에 맞게 메서드 작게 분리
- 변수명 명확하게 수정
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant