Skip to content

숫자 야구게임 미션을 위한 저장소

Notifications You must be signed in to change notification settings

huneea/java-baseball-precourse

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

숫자 야구 게임

진행 방법

  • 숫자 야구 게임 요구사항을 파악한다.
  • 요구사항에 대한 구현을 완료한 후 자신의 github 아이디에 해당하는 브랜치에 Pull Request(이하 PR)를 통해 과제를 제출한다.

과제 제출 과정

기능 요구사항

  • 기본적으로 1부터 9까지 서로 다른 수로 이루어진 3자리의 수를 맞추는 게임이다.

  • 같은 수가 같은 자리에 있으면 스트라이크, 다른 자리에 있으면 볼, 같은 수가 전혀 없으면 포볼 또는 낫싱이란 힌트를 얻고, 그 힌트를 이용해서 먼저 상대방(컴퓨터)의 수를 맞추면 승리한다.

         - (예1) 상대방(컴퓨터)의 수 : 123, 사용자입력 : 456 인 경우 낫싱
         - (예2) 상대방(컴퓨터)의 수 : 123, 사용자입력 : 159 인 경우 1스트라이크
         - (예3) 상대방(컴퓨터)의 수 : 123, 사용자입력 : 321 인 경우 1스트라이크 2볼
         - (예4) 상대방(컴퓨터)의 수 : 123, 사용자입력 : 123 인 경우 3스트라이크
    
  • 위 숫자 야구게임에서 상대방의 역할을 컴퓨터가 한다. 컴퓨터는 1에서 9까지 서로 다른 임의의 수 3개를 선택한다. 게임 플레이어는 컴퓨터가 생각하고 있는 3개의 숫자를 입력하고, 컴퓨터는 입력한 숫자에 대한 결과를 출력한다.

  • 이 같은 과정을 반복해 컴퓨터가 선택한 3개의 숫자를 모두 맞히면 게임이 종료된다.

  • 게임을 종료한 후 게임을 다시 시작하거나 완전히 종료할 수 있다.

프로그램 실행 결과

프로그래밍 요구사항 - 메소드 분리

  • 자바 코드 컨벤션을 지키면서 프로그래밍한다.

  • indent(인덴트, 들여쓰기) depth를 2가 넘지 않도록 구현한다. 1까지만 허용한다.

    • 예를 들어 while문 안에 if문이 있으면 들여쓰기는 2이다.
    • 힌트: indent(인덴트, 들여쓰기) depth를 줄이는 좋은 방법은 함수(또는 메소드)를 분리하면 된다.
  • 자바 8에 추가된 stream api를 사용하지 않고 구현해야 한다. 단, 람다는 사용 가능하다.

  • else 예약어를 쓰지 않는다.

    • 힌트: if 조건절에서 값을 return하는 방식으로 구현하면 else를 사용하지 않아도 된다.
    • else를 쓰지 말라고 하니 switch/case로 구현하는 경우가 있는데 switch/case도 허용하지 않는다.
  • 함수(또는 메소드)의 길이가 10라인을 넘어가지 않도록 구현한다.

    • 함수(또는 메소드)가 한 가지 일만 잘 하도록 구현한다.

프로그래밍 요구사항 - 단위 테스트

  • 로직에 단위 테스트를 구현한다. 단, UI(System.out, System.in, Scanner) 로직은 제외
    • 핵심 로직을 구현하는 코드와 UI를 담당하는 로직을 구분한다.
  • JUnit5와 AssertJ 사용법에 익숙하지 않은 개발자는 첨부한 "학습테스트를 통해 JUnit 학습하기.pdf" 문서를 참고해 사용법을 익힌 후 JUnit5 기반 단위 테스트를 구현한다.

과제 진행 요구사항

미션 마감 및 기준

  • 2021년 4월 27일(화) 23시 59분까지 GitHub을 통한 미션 제출과 메일까지 완료해야 한다.
  • 2021년 4월 27일(수) 00시 이후 추가 push도 허용하지 않는다.
  • 2021년 4월 27일(수) 00시 이후 제출한 경우 미션을 제출하지 않은 것으로 한다.

구현할 기능 목록

  • 타자 (컴퓨터)
    • 1~9까지 랜덤한 수 3개(3자리)를 만들어낸다. (중복금지)
  • 투수 (사용자)
    • 3자리의 숫자를 만들어낸다. (사용자 입력)
    • 사용자에게 입력받은 숫자의 유효성 검증을 한다.
    • 유효한 3자리의 숫자를 입력할때까지 반복해서 입력을 받는다.
    • 유효하지 않을때 재입력을 받을것인지 선택할 수 있도록 한다. (테스트용도)
  • 심판 (입력값 비교 체크)
    • 타자의 수와 투수의 수를 비교해서 결과를 산출해낸다.
  • 야구 서비스
    • 야구게임을 시작한다.
    • 사용자가 입력한 3자리의 숫자가 맞을때까지 반복해서 입력을 받는다.
      • 틀리면 판정 결과를 출력해준다. (포맷팅)
    • 맞으면 재시작/종료 여부를 묻고 입력값에 따라 재시작/종료 처리한다.
  • 야구 유틸
    • 중복문자열을 제거한다.
    • int형 리스트를 string형 리스트로 변환한다.
    • 메세지를 출력한다.
    • 입력받은 숫자가 유효한지 검증한다.
    • 숫자 유무를 판별한다.
    • 숫자 자리수가 맞는지 확인한다.
    • 문자열을 숫자 리스트형으로 변환한다.
    • 입력된 값이 범위내의 character로 이루어진 문자열인지 확인한다.

About

숫자 야구게임 미션을 위한 저장소

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%