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

[자동차 경주] 홍서진 미션 제출합니다. #748

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

Conversation

lucia0929
Copy link

🚗 자동차 경주 게임 🚗

✅ 기능 구현 목록

  1. [✅] 자동차 이름 입력 받기

    • 1-1. [✔️] 이름 입력 메세지 출력
      • ex) "경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"
    • 1-2. [✔️] 이름 입력 처리
      • 이름 입력은 쉼표로 구분
      • 이름에 공백이 들어갈 경우 제거
      • 빈 문자열 제거
      • ex) pobi,woni,jun
    • 1-3. [✔️] 이름 입력 예외 처리
      • 이름이 두 개 미만인 경우
      • 각 이름이 5글자 초과인 경우
      • 중복되는 자동차 이름이 있는 경우
      • throw문을 사용해 "[ERROR]" 로 시작하는 메세지를 가지는 예외 발생
      • 애플리케이션 즉시 종료
  2. [✅] 시도 횟수 입력 받기

    • 2-1. [✔️] 시도 횟수 입력 메세지 출력
      • ex) "시도할 횟수는 몇 회인가요?"
    • 2-2. [✔️] 시도 횟수 입력 처리
      • 공백이 들어갈 경우 제거
      • ex) 3
    • 2-3. [✔️] 시도 횟수 입력 예외처리
      • 1보다 작은 숫자를 입력한 경우
      • 자연수가 아닌 형식을 입력한 경우
      • 시도 횟수가 10 이상인 경우(임의 설정)
      • throw문을 사용해 "[ERROR]" 로 시작하는 메세지를 가지는 예외 발생
      • 애플리케이션 즉시 종료
  3. [✅] 자동차 만들기

    • 3-1. [✔️] 입력 값에 따라 자동차 생성
  4. [✅] 자동차 경주

    • 4-1. [✔️] 0 ~ 9 사이 무작위 값 생성
    • 4-2. [✔️] 4 이상일 경우 한칸 전진
    • 4-3. [✔️] 시도 횟수 만큼 경주 진행
    • 4-4. [✔️] 마지막 경주로 최종 우승자 구하기
      • 우승자 한 명 이상 가능
  5. [✅] 실행 결과 나타내기

    • 5-1. [✔️] 실행 결과 메세지 출력
      • "실행 결과"
    • 5-2. [✔️] 각 차수별 실행 결과 메세지 출력
  6. [✅] 최종 우승자 나타내기

    • 6-1. [✔️] 최종 우승자 메세지 출력
      • 우승자가 여려명일 경우 쉼표로 구분
      • ex) 최종 우승자 : pobi, jun

✔️ 테스트 구현 목록

  1. [✅] 자동차 이름 입력 받기

    • T-1-1. [✔️] 이름 입력 메세지 출력 테스트
    • T-1-2. [✔️] 이름 입력 처리 테스트
    • T-1-3. [✔️] 이름 입력 예외처리 테스트
  2. [✅] 시도 횟수 입력 받기

    • T-2-1. [✔️] 시도 횟수 입력 메세지 출력 테스트
    • T-2-2. [✔️] 시도 횟수 입력 처리 테스트
    • T-2-3. [✔️] 시도 횟수 입력 예외처리 테스트
  3. [✅] 자동차 만들기

    • T-3-1. [✔️] 입력 값에 따른 자동차 생성 테스트
  4. [✅] 자동차 경주

    • T-4-1. [✔️] 0 ~ 9 사이 무작위 값 생성 테스트
    • T-4-2. [✔️] 4 이상일 경우 한칸 전진 테스트
    • T-4-3. [✔️] 시도 횟수 만큼 경주 진행 테스트
    • T-4-4. [✔️] 마지막 경주로 최종 우승자 구하기 테스트
  5. [✅] 실행 결과 나타내기

    • T-5-1. [✔️] 실행 결과 메세지 출력 테스트
    • T-5-2. [✔️] 각 차수별 실행 결과 메세지 출력 테스트
  6. [✅] 최종 우승자 나타내기

    • T-6-1. [✔️] 최종 우승자 메세지 출력 테스트

🖋️ 요구사항

  • Node.js 18.17.1 버전에서 실행 가능해야 한다.
  • 프로그램 실행의 시작점은 App.js의 play 메서드이다.
  • package.json을 변경할 수 없다.
  • 순수 Vanila JS로만 구현한다.
  • 외부 라이브러리(jQuery, Lodash 등)를 사용하지 않는다.
  • JavaScript 코드 컨벤션을 지키면서 프로그래밍 한다
  • 프로그램 종료 시 process.exit()를 호출하지 않는다
  • 프로그램 구현이 완료되면 ApplicationTest의 모든 테스트가 성공해야 한다
  • 요구 사항에서 달리 명시하지 않는 한 파일, 패키지 이름을 수정하거나 이동하지 않는다.
  • indent(인덴트, 들여쓰기) 2까지만 허용한다.
    • 예를 들어 while문 안에 if문이 있으면 들여쓰기는 2이다.
  • jest를 이용하여 본인이 정리한 기능 목록이 정상 동작함을 테스트 코드로 확인한다.
  • @woowacourse/mission-utils에서 제공하는 Random 및 Console API를 사용하여 구현한다
  • Random 값 추출은 Random.pickNumberInRange()를 활용한다.
  • 사용자의 값을 입력 받고 출력하기 위해서는 Console.readLineAsync, Console.print를 활용한다

📢 1주차 공통 피드백

  • 요구사항을 정확히 준수한다
  • 커밋 메시지를 의미 있게 작성한다
  • git을 통해 관리할 자원에 대해서도 고려한다
  • Pull Request를 보내기 전 브랜치를 확인한다
  • PR을 한 번 작성했다면 닫지 말고 추가 커밋을 한다
  • 이름을 통해 의도를 드러낸다
  • 축약하지 않는다
  • 공백도 코딩 컨벤션이다
  • 공백 라인을 의미 있게 사용한다
  • space와 tab을 혼용하지 않는다
  • 의미 없는 주석을 달지 않는다
  • linter와 Code Formatter의 기능을 활용한다
  • EOL(End Of Line)
  • 불필요한 console.log를 남기지 않는다
  • JavaScript에서 제공하는 API를 적극 활용한다

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.

2 participants