betterfly4202 / java-baseball

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

숫자 야구 게임

진행 방법

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

과제 제출 과정

구현할 기능 목록

  1. 1~9까지 서로 다른 3자리 수 생성 : NumberBox
    • 투수 : 서로 다른 3자리 난수 박스 생성
    • 타자 : 입력 받은 숫자로 박스 생성
  2. 배팅 결과(strike-ball-nothing) 판별 : Swing
    • STRIKE : 같은 위치, 같은 값
    • BALL : 다른 위치, 같은 값
    • NOTHING : 같은 위치, 같은 값
  3. 플레이어(투수, 타자)객체 생성 : Pitcher & Batter
  4. 스윙 결과 객체 생성 : ResultBoard
  5. 게임 실행 클래스 구현
    • 실행 목록 정의
      1. 게임 시작
        • 투수 생성 - 컴퓨터
        • 타자 생성 - 유저
      2. 타자 숫자 입력
      3. 숫자 검증(스윙 결과)
      4. 아웃 판별
      5. 종료(exit)/재시작(2~4 반복) => state 패턴 적용
  6. 리팩토링

고민할 부분

실행 흐름

  1. 투수 객체 생성
    • 플레이어 이름 입력
    • 1~9까지 서로 다른 3자리 수 생성
  2. 타자 객체 생성
    • 플레이어 이름 입력
  3. 게임 시작
    1. 타자는 1~9까지 서로 다른 3자리 수 입력
    2. 3개의 숫자 및 위치를 모두 맞히면 게임 종료 (3 strike -> out)
    3. 3 STRIKE 가 되지 않는 경우 1~2를 반복

객체 상태

  • 객체 설계
    • 투수 - Pitcher

      • 플레이어 이름
      • 1~9까지 서로 다른 3자리 수(자동 생성)
        • numberBox 생성
    • 타자 - Batter

      • 플레이어 이름
      • 1~9까지 서로 다른 3자리 수(사용자 입력)
        • numberBox 생성
    • 번호 생성(1-9) - NumberBox

      • 1~9까지 서로 다른 3자리 수
        • 인덱스
      • 예외처리
        • 빈값 입력 불가
        • 3자리 이상 불가
        • 같은 숫자 입력 불가
    • 결과 보드판 생성 : ResultBoard

      • Map 활용
      • Key : 입력 값
      • Value : Swing 결과
    • 배팅 결과 - Batting

      • 스트라이크 : 같은 자리, 같은 수
      • 볼 : 다른 자리, 같은 수
      • 낫싱 : 다른 자리, 다른 수
        • enumeration(strike, ball, nothing) 통한 결과 로직 관리
        • 결과 보드판을 바탕으로 스윙 결과 전달

/*

<최종 실행 흐름>

1. 투수 객체 생성
    - 숫자 자동 생성
2. 타자 객체 생성
3. 타자 스윙(숫자 입력)
4. 타자 배팅 결과
5. 결과 보드판(GameResult) 갱신
6. 아웃 여부 판별
7. 종료/재시작    

아웃 아닌 경우 -> 3~6 반복
아웃인 경우 -> 종료/재시작(7) 

*/

추가 사항

  • 디자인 패턴
    • (행동 패턴)state pattern : 다를 경우 계속 실행, 아닌 경우 종료 (ON/OFF)

About

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


Languages

Language:Java 100.0%