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

[숫자 야구 게임] 조재성 미션 제출합니다. #442

Closed
wants to merge 22 commits into from

Conversation

is2js
Copy link

@is2js is2js commented Nov 29, 2021

1주차 참가자 조재성입니다. java 경험이 적어서 걱정했는데 조금씩 자신감이 붙기 시작했습니다! 감사합니다!

기능 구현 목록

  • 3스트라이크가 나올때까지 게임 진행하다가 재시작 여부 물어보기 - refree#askRestart()
    • 3스트라이크 나올시 안내멘트 및 새로 시작여부 입력받기 - InputView#getInput()
      • 새로 시작시 서로 다른 임의의 수 3개 새로 생성하기
  • 1에서 9까지 서로 다른 임의의 수 3개(컴퓨터 수)를 생성하기 - Computer#createRandomNumbers()
  • 1에서 9까지 서로 다른 임의의 수 3개(플레이어 수)를 입력받기 - Refree#askNumbers()
    • 플레이어 수를 검증하고 변환하는 기능 - Refree#checkValidationAndConvertType()
      • 물어본 숫자 검증해서 유효하지 않으면 에러 내기, 그렇지 않으면 숫자로 변환하기
        • 검증내역: 3글자 입력인지 -> 숫자 입력인지 -> 서로 다른수 맞는지 -> 1~9사이 범위인지
  • 컴퓨터수 와 플레이어 수 비교하기 - Refree#compare()
    • 같은 수 있는지 파악하기 - Refree#countSameNumber()
      • 같은 수가 전혀 없으면 낫싱 출력
    • 같은 수가 있을 때 몇 개가 같은 위치인지 파악하기 - Refree#countStrike()
      • 같은 자리에 있으면 스트라이크로 갯수로 파악
      • 다른 자리에 있으면 볼 갯수로 파악
      • n볼 m스트라이크 출력하기

그외 요구사항 체크리스트

  • 자바의 버전이 8버전인가
  • 자바 코드 컨벤션을 지키는가
  • 3항 연산자를 쓰지 않는가
  • indent depth가 2이하인가
  • 하나의 함수가 한 가지 일만 하도록 하였는가
  • (추가) 하드코딩 하진 않았는가
  • RandomspickNumberInRange()를 사용했는가
  • ConsolereadLine()을 사용했는가
  • gradlew.bat clean test의 모든 테스트가 통과하는가

그외 추가 학습사항 및 과제수행시 키포인트

  • java 기본 문법 정리하기(자바의 정석 등, complete)
  • 백준 python 기본 구현 문제 -> java 로 풀어보기(~ing)
  • java로 콘솔 게시판 만들어보기(~ing)
  • 과제 수행시 키포인트
    • 개발 시작전에 요구사항 충분히 파악하기
    • 기본 프로젝트 구조 및 뼈대 코드 작성하고 시작하기
    • 라이브러리 확인 및 컨벤션 포맷터 적용, 버전 확인 등 기본적인 협업환경 확인하기
    • Application에 개발하지 않고 각 class에서 개발하여 구동하기
    • scanner 등 input, outview은 static으로 작성해서 재활용하기
    • 문자열type의 숫자입력시 검증 여러가지 해보기(길이-> 포맷-> 범위-> 중복여부 등 기타)
    • else 안쓰고, 반복문안에 if는 method로 빼서 method내에서 하여 indent줄이기
    • 무한반복시 조건변수를 결과로 업데이트 하면 됬으나, 재시작 등 추가분기가 필요한 경우, status변수 추가 도입하기
    • 상수도 반복되니 따로 class로 빼기
    • 중복확인은 list길이로 하는 데, stream으로 편하게 하기
      • list 중복확인 : list.stream().distinct().count()
      • 입력받은 문자열배열 -> 정수 list변환 : Arrays.stream( ).mapToint(Integer::parseInt).boxed().collect(Collectors.toList());

플레이어 수를 검증하고 변환하는 기능 구현
 - 4가지 검증(길이, 포맷, 범위, 중복) 메서드 기능 구현
 - 검증후 String -> Integer 타입으로 변환한 list 반환하는 기능 구현
Refree
 - askRestart() 등 메소드를 추가하여 재시작여부를 입력받아 검증함
View
 - OutView 클래스에서 출력메소드들을 추가함
Controller
 - isThreeStrike()메소드를 추가하여 게임 종료를 분기함.
Controller
 - 재시작시 "1"입력할 때만 컴퓨터 수 재생성하도록 수정함.

Constant
 - 스크라이크 -> 스트라이크 오타 수정함.

Refree
 - split시 사용되는 ""과 빈칸" "을 같은 상수이름으로 작성하여 수정함.
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