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

kyne.k 사전과제 제출합니다 #28

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

Conversation

mckim123
Copy link

No description provided.

- 기능 요구 사항, 실행 결과 예시, 프로그래밍 요구 사항 pdf 내용 README.md에 추가
- 숫자 야구 게임 기능 목록 생성 및 정리
- 패키지 및 클래스 구조 생성
- InputView, OutputView, GameController 생성
- gameController 실행
- 생성자를 통해 InputView, OutputView 초기화(final)
- play() 메소드 구현
  - 게임 초기화 후 실행
  - 각 게임 종료 후 재실행 여부에 대한 입력을 받도록 구현
- playGame() 메소드 구현 : 각 게임 내에서의 실행 기능
  - 사용자의 입력을 받아 StrikeBallCount 결과 생성
  - 결과 출력
  - 게임 종료 여부를 확인하여 종료할 때까지 실행
- 생성자로 정답을 입력받고, 이를 활용한 심판 생성
- getResult() 메소드 구현
  - userNumbers를 인자로 받아 판정 결과 반환
- 게임 전반에서 쓰이는 상수를 관리하는 enum class
- getValue() 메소드 생성
- reset() 메소드 : 스트라이크, 볼 카운트 모두 0으로 초기화
- strikeCount, ballCount에 대한 getter 구현
- addStrikeCount(), addBallCount() : strikeCount, ballCount 각각을 1 늘리는 함수
- getIsComplete() : 길이와 strikeCount가 일치하는지 확인 -> 게임이 종료되는지 확인
- 판정하는 메서드 judge()와의 이름 중복을 피하기 위해 클래스 명 수정
- List<Integer>의 형태로 숫자 저장
- contains, add, isFull, getIndex 메소드를 구현
- java.util.Random 클래스 활용
- baseballNumbers.java의 add method 활용
- StringBuilder 활용
- addString() 메서드를 구현하여 스트라이크, 볼을 StringBuilder에 더하는 과정을 한 번에 처리
- 스트라이크, 볼에 대한 문자열을 추가한 이후에도 비어있다면 낫싱을 추가
- judge() 메소드 구현
  - 길이를 가져오기 위해 length 생성
  - 특정 자리 숫자 가져오기 위해 BaseballNumbers.getNumberAt() 메소드 추가
  - 역할을 분리하여 각 자리에 따라 판정하는 메소드 분리 : judgeOneNumber()
- judgeOneNumber() 메소드 구현
  - 포함하는 경우 카운트를 수정하는 메소드 changeCount() 호출
- changeCounte() 메소드 구현
  - 인덱스도 일치하는 경우 스트라이크, 아닌 경우 볼 카운트 1 증가
- validate() : 검증 후 원하는 변환 값을 반환하는 메소드
- removeSpace() : 공백을 제거하는 메소드
- 정규표현식을 활용하여 각 자리가 지정 범위 내에 포함되는지 여부와 길이 검증
- Hashset의 길이가 기존과 길이가 같은지 판정하여 중복이 없음을 검증
- BaseballNumbers의 생성자 추가
  - 검증된 입력을 문자열 배열로 변환하여 인자로 제공
- validate 함수 구현
- 잘못된 입력의 경우 예외 처리
- 예외 처리 로직 구현
- 기존 누락된 "3개의 숫자를 모두 맞히셨습니다! 게임 종료" 문자열 출력 추가
- Readme.md 기능 목록 추가
- 구현된 기능 체크
- 재시작 여부 command를 enum class로 관리
- 이를 반영하여 InputRestartValidator, InputView 수정
- 모든 카운트 조합을 담당하는 내부 enum BallCounts 생성
- 모든 조합에 대해 제대로 된 결과가 출력되는지 확인
- Restart 입력에 대한 테스트 코드
- UserAnswer 입력에 대한 테스트 코드
- 성공 케이스, 실패 케이스 체크(형식 예외, 중복 예외)
- 가지고 있는 숫자(numbers)를 비교하도록 수정
- 가지고 있는 숫자(strikeCount, ballCount)끼리 비교하도록 수정
- 다른 테스트에서도 사용하기 위해 inner enum 분리
- StrikeBallCount 생성도 분리된 enum에서 진행
- 가능한 모든 볼카운트 조합에 대해 제대로 나오는지 확인
- 기존 요구사항과 기능 사항에 대한 서로 다른 Readme 파일을 하나로 통합함
- import 구문 순서 변경
- 개행 추가 및 삭제
- InputUserAnswerValidatorTest의 메서드 이름 수정
: InputRestart_성공테스트() -> InputUserAnswer_성공테스트()
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