Skip to content

bugoverdose/java-racingcar

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

[레벨1] 자동차 경주 미션

구현할 기능

  • 경주할 자동차들의 이름을 사용자로부터 입력받는다.

    • 자동차 이름은 쉼표(,)를 기준으로 구분하여 받는다.
    • 자동차명으로 빈문자열 혹은 공백만 입력되면 예외가 발생한다.
    • 자동차명이 중복될 경우 예외가 발생한다.
    • 자동차명이 1대만 입력되어도 예외가 발생하지 않는다.
    • 자동차 이름이 5글자를 넘어가면 예외가 발생한다.
  • 사용자로부터 전체 라운드 횟수로 양의 정수를 입력받는다.

    • 횟수로 정수 이외의 값이 입력되면 예외가 발생한다.
    • 횟수로 0이 입력되면 예외가 발생한다.
    • 횟수로 음수가 입력되면 예외가 발생한다.
  • 각 라운드마다 각 자동차는 전진 혹은 정지한다.

    • 각 자동차는 0~9 사이의 숫자를 임의로 생성하고, 4 이상이면 전진한다.
    • 각 라운드 종료시, 모든 자동차의 현재 위치를 출력한다.
  • 전체 라운드 종료 후 우승자를 출력한다.

    • 우승자는 가장 멀리 전진한 자동차가 된다.
    • 우승자가 두 명 이상이어도 예외가 발생하지 않는다.

심화

  • 게임 종료 후 더 이상 사용되지 않는 데이터를 제거한다.

    • 종료된 Game 인스턴스에 명시적으로 null을 할당한다.
    • 새로운 Game 인스턴스를 생성했을 때 이전 게임의 Car 인스턴스가 CarRepository에 남아있지 않도록 한다.
  • 게임 종료 후 새로운 게임의 시작 여부를 사용자로부터 입력받는다.

    • y를 입력받으면 위의 과정을 전부 다시 시작한다.
    • n를 입력받으면 프로그램을 정상적으로 종료시킨다.

프로젝트 구조

  • 핵심 비지니스 로직을 가지는 객체를 domain 패키지, UI 관련한 객체를 view 패키지에 구현한다.
  • MVC 패턴 기반 리팩토링
    • domain 패키지의 객체는 view 패키지 객체에 의존하지 않는다.
    • view 패키지의 객체는 domain 패키지 객체에 의존할 수 있다.

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%