-
Notifications
You must be signed in to change notification settings - Fork 200
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
[자동차 경주] 원준영 미션 제출합니다. #205
Open
Junyoung-WON
wants to merge
39
commits into
woowacourse-precourse:main
Choose a base branch
from
Junyoung-WON:Junyoung-WON
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
[자동차 경주] 원준영 미션 제출합니다. #205
Junyoung-WON
wants to merge
39
commits into
woowacourse-precourse:main
from
Junyoung-WON:Junyoung-WON
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
클래스로 구분하여 각 클래스가 행하는 기능들을 명세하였다. <클래스 구분> - 사용자: 사용자 입력 담당 - 입력 검사: 사용자 입력이 올바른지 검사 - 자동차: 난수를 뽑아서 전진/정지 - 게임 관리자: 게임 진행 담당
사용자 클래스 User 파일 생성
자동차 클래스 Car 파일 생성
사용자 입력을 검사하는 Validator 클래스 생성
게임 진행을 담당하는 게임 관리 클래스 GameManager 생성
제공된 라이브러리의 Console을 활용하여 사용자 입력 받음. validator를 활용한 입력 검사 필요.
정규표현식을 활용하여 사용자 입력에 ','와 '_' 이외의 특수문자가 포함되는지 확인
입력된 문자열에 쉼표와 언더바 이외에 다른 특수문자가 있는지 검사
레이싱 게임의 차량은 2대 이상이어야 하므로, 입력 문자열에 쉼표가 있는지 확인한다.
validateString -> containsComma
이름이 Null 또는 빈 문자열인지 확인한다.
차량의 이름은 5자리 이하여야 한다. 5글자가 넘어갈 시, IllegalArgumentException을 발생시킨다.
입력받은 문자열에 빈 칸(띄어쓰기)가 있는지 확인하는 기능 구현 입력 문자열을 검사하는 함수 이름 변경 containsComma -> validateInputString
입력 문자열 중에 \t 가 포함되었는지도 검사한다.
validator를 사용하여 입력 문자열과 차량 이름에 대한 검증 구현
시도할 횟수를 입력받는 문자열은 정수로만 이루어진 문자열이어야 한다. 정규표현식을 활용하여 검사한다.
사용자로부터 시도할 횟수를 입력받는다. validator를 활용하여 입력받은 문자열이 올바른 정수인지 확인한다.
정수만 입력하였을 때 정상 동작하며, 다른 문자나 빈칸이 포함되면 예외가 발생한다. 단, 0을 입력한 경우에 대한 예외처리가 필요하다.
시도할 횟수는 0보다 큰 정수이어야 한다.
자동차가 Randoms 클래스의 pickNumberInRange()를 사용하여 0부터 9사이의 숫자를 뽑는다. 해당 숫자가 4 이상이면 전진하고, 아니면 정지한다. 4 이상인 경우 해당 숫자만큼 movingDistance를 증가시킨다.
차량이 가진 이름과 이동한 거리만큼을 '-' 문자로 출력한다.
이동 거리를 정수로 둘 경우 반복문을 통해 문자열을 생성하여 출력하여야 한다. 이동 거리를 정수로 두기보다 문자열을 활용하는 것이 결과 출력 시에 더 효율적일 것이다.
게임 관리자 클래스에서 차량의 이동거리를 나타내지 않고, 자동차 클래스 내부의 메소드를 통해 출력시키도록 구현한다.
사용자 입력을 통해 받은 차량 이름 리스트와 시도 횟수를 생성자로 받는 것으로 구현 계획을 수정한다.
- 생성자는 차량 이름 리스트와 시도 횟수를 받아, 자동차 리스트를 생성한다. - 자동차 객체를 생성하여 리스트에 추가하는 함수 createCarList를 작성하였다.
시도 횟수만큼 자동차 경주를 진행하고 최종 결과까지 출력한다. 각 자동차가 난수를 뽑아 전진을 시도하고, 매 라운드 결과를 보여주는 함수와 최종 우승자를 찾아 출력하는 함수도 추가 구현 예정이다.
각 라운드마다 수행하는 oneRoundResult() 자동차 리스트의 자동차마다 난수를 뽑아 전진 할지 말지를 결정하여 전진/정지하고, 현재 이동거리를 이름과 함께 표시한다.
본래 전체적인 게임의 진행을 관리하던 역할에서 자동차 경주 진행을 관리하는 역할로 변경하였다. 이에 시작 문구 출력과 사용자의 입력 기능을 삭제하고, 자동차 경주 진행에 관련한 기능만을 명세하였다.
최종 우승자를 찾아내어 출력하는 함수이다. 우승자를 찾아내는 기능을 추가로 구현해야한다.
findMaxDistance() : 차량 중 가장 멀리 이동한 거리를 반환 findWinners() : 가장 멀리 이동한 거리의 차량들을 문자열로 반환 printWinners() : findWinners로부터 최종 우승자를 출력
빈칸(띄어쓰기, 탭)이 포함된 경우, 차량이 하나인 경우, 이름이 비어있는 경우
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
자동차 경주
구현 기능
사용자 입력
IllegalArgumentException
발생 후 종료게임 진행
개발 명세
사용자
사용자 입력을 담당한다.
입력 검사
사용자의 입력이 올바른지 검사한다.
IllegalArgumentException
을 발생시킨다.자동차
자동차는 이름과 이동 거리를 갖고, 전진/정지의 기능과 이동거리 출력의 기능이 있다.
게임 관리자
자동차 경주의 진행을 관리한다.