Skip to content

cold-pumpkin/java-baseball-precourse

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

숫자 야구 게임

🎮 게임 규칙

1부터 9까지 서로 다른 수로 이루어진 3자리 수를 맞추는 게임

  • 플레이어는 컴퓨터가 임의로 정한 3자리 수를 숫자와 자리까지 정확하게 맞춰야 한다.
  • 컴퓨터는 플레이어가 입력한 숫자에 따라 결과를 출력한다.
      • 같은 수가 다른 자리에 있는 경우
    • 스트라이크
      • 같은 수가 같은 자리에 있는 경우
    • 낫싱
      • 같은 수가 전혀 없는 경우
  • 플레이어가 정답을 맞추면 게임이 종료되며, 플레이어가 원하는 경우 새로운 게임을 시작할 수 있다.

🛠️ 프로젝트 구조

GameController

Game을 생성하여 초기화 및 (재)시작 시킨다.

  • 게임 초기화
    • 새로운 게임을 위해 Game의 상태를 초기화 시킨다.
  • 게임 시작
    • 새로운 게임을 플레이 시킨다.
  • 게임 재시작/종료 안내
    • 게임 한 턴이 종료된 후 플레이어에게 재시작/종료 여부를 입력받아 게임을 재시작/종료 시킨다.
    • 게임 재시작/종료 안내 메시지는 다음과 같다.
      • 게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요. :

Game

게임 프로세스를 정의한 로직을 수행한다.

  • 숫자 입력 안내
    • 플레이어에게 숫자를 입력받는다.
    • 입력 안내 메시지는 다음과 같다.
      • 숫자를 입력해주세요 :
  • 볼/스트라이크 카운터 호출
    • Computer를 통해 볼과 스트라이크 개수를 카운트 한다.
  • 결과 메시지 출력
    • Computer가 판단한 결과에 따라 메시지를 출력한다.
    • 결과 메시지는 다음과 같다.
      • 예시1 : 1볼 2스트라이크
      • 예시2 : 낫싱

Computer

  • 정답 숫자 생성
    • 1부터 9까지 서로 다른 수로 이루어진 3자리 수를 랜덤으로 생성한다.
  • 볼/스트라이크 카운터 정의
    • 볼과 스트라이크를 개수를 카운트하는 로직을 정의한다.

InputReceiver

플레이어의 입력값을 받고 검증한다.

  • 정답 숫자 입력 받기
    • 플레이어로부터 숫자들을 입력받는다.
  • 게임 재시작/종료 여부 입력 받기
  • 입력값 검증
    • Validator를 통해 플레이어가 입력한 입력값이 게임의 규칙에 벗어나지 않는지 검증한다.
    • 정답 숫자 입력 시 다음을 검증한다.
      • 입력 데이터 타입(숫자)
      • 입력 숫자 개수(3개)
      • 중복 여부
      • 숫자 범위(0 이상 9 이하)
    • 게임 재시작/종료 여부 입력 시 다음을 검증한다.
      • 숫자 범위(1:재시작 / 2:종료)
    • 잘못된 입력값인 경우 IllegalArgumentException을 발생시킨다.

Validator

플레이어의 입력값을 검증할 로직을 정의한다.

  • InputReceiver에서 입력값 검증 시 활용한다.

InputUtils

플레이어의 입력값을 Integer 리스트로 변환시킬 유틸 함수를 정의한다.

  • InputReceiver에서 입력값 타입 변환 시 활용한다.

ControllerMessageViewer

게임 재시작/종료 메시지와 출력 함수를 정의한다.

  • GameController에서 게임 재시작/종료 안내시 활용한다.

GameMessageViewer

숫자 입력 및 정답 메시지와 출력 함수를 정의한다.

  • Game에서 숫자 입력 및 정답 안내 시 활용한다.

Constraint

게임에서 정의하고 있는 룰에 따라 사용될 상수들을 정의한다.

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%