这是indexloc提供的服务,不要输入任何密码
Skip to content

gisungPark/java-racingcar

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

진행 방법

  • 자동차 경주 게임 요구사항을 파악한다.
  • 요구사항에 대한 구현을 완료한 후 자신의 github 아이디에 해당하는 브랜치에 Pull Request(이하 PR)를 통해 코드 리뷰 요청을 한다.
  • 코드 리뷰 피드백에 대한 개선 작업을 하고 다시 PUSH한다.
  • 모든 피드백을 완료하면 다음 단계를 도전하고 앞의 과정을 반복한다.

문자열 계산기 🧮

기능 구현 목록

  • 계산기 - Calculator
    • 사용자입력 - Calculator#getUserInput
    • 예외 처리 : 다시 입력하라는 안내 문구 출력
      • 정규표현식으로 잡을 것들 - Validator#checkValidate
        • 입력값이 null이거나 빈 공백 문자일 경우
        • 사칙연산 기호가 아닌 것이 들어가 있을 경우 (문자, %, ...)
        • 숫자 다음 사칙연산 기호가 아닌 다른 숫자가 오는 경우 (e.g. 33 * 1 23)
        • 사칙연산 기호 다음 기호가 또 나오는 경우 (e.g. 33 + + 1)
        • 사칙연산 기호가 제일 앞이나 제일 뒤에 올 경우
    • 입력값을 숫자와 연산기호로 나누어 관리한다. - Expression
      • 문자열 내에 있는 공백을 모두 지운다.
      • 숫자와 문자로 나누어 List로 관리한다.
      • 연산 중 0으로 나누는 경우에 대한 예외처리 - Calculator#checkDivideZero
      • 계산결과 출력 - Expression#printResult
  • 사칙연산 - Operation
    • 덧셈 - Operation#addition
    • 뺄셈 - Operation#subtraction
    • 곱셈 - Operation#multiplication
    • 나눗셈 - Operation#division

자동차 경주 게임

기능 구현 목록

  • 게임 진행 RacingGame

    • 사용자의 입력을 받으면서 게임을 진행하는 로직 #startGame()
    • 입력 다 마치고 자동차 경기 시작 #startRacing()
      • 각 자동차들을 움직임 #driveCars()
      • 자동차 위치의 최대값을 갱신 #setMaxPosition()
    • 경주가 끝나고 우승자 출력 #showGameResult()
  • 사용자 입력 UserInput

    • 각 자동차에 이름을 부여하기 위한 사용자 입력 #getCarNames()
      • 각 자동차의 이름은 쉼표를 기준으로 구분 (문자와 쉼표 사이의 공백 있어도 상관X) #splitStringByComma()
      • 각 자동차 이름의 길이는 1 ~ 5자 까지 가능 #checkNameLength()
      • 자동차는 최소 1대, 최대 n대 까지 입력 가능 #checkCarCount()
      • 잘못 입력한 경우에는 [ERROR] 메세지와 함께 다시 입력 받음
    • 시도 횟수를 정하기 위한 사용자 입력 #getTryNumber()
      • 1 이상의 정수만 입력 가능 #isNumber(), #isTryNumberValidLength()
      • 잘못 입력한 경우에는 [ERROR] 메세지와 함께 다시 입력받음
  • 각 자동차의 상태를 관리 Car

    • 자동차의 이름, 전진 상태
    • 자동차를 전진할지 정지할지 결정 #drive()
      • 자동차를 전진/정지 상태 업데이트
      • 자동차의 전진조건 확인 #isMove()
        • 생성한 랜덤 정수가 4 이상인 경우 true 를 반환
      • 랜덤한 정수 생성 #generateRandomNumber()
        • 0 ~ 9 의 랜덤한 정수를 반환
      • 자동차의 상태 출력 #printStatus()

Step 2 - MVC 패턴으로 리팩터링

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

Cars : Car 들의 상태 관리

  • 최대값 관리
  • 랜덤넘버 생성
  • Car들 움직이기

CarHistory : Car 의 현 상태정보

Car : 자동차 객체

- Name : 이름 객체
- Position : 위치 객체

About

자동차 경주용 게임을 관리하는 저장소

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published