Skip to content

Latest commit

 

History

History
113 lines (79 loc) · 2.93 KB

File metadata and controls

113 lines (79 loc) · 2.93 KB

⚾ 경기 진행 구조 (Game Flow Architecture)

본 프로젝트는 경기 생성 → 경기 세팅 → 경기 진행 → 이닝 단위 처리로 명확히 책임을 분리한 구조를 따른다.
각 클래스는 하나의 역할에 집중하도록 설계되어 있으며, 확장(난이도 추가, AI, 신규 이벤트)에도 유연하다.


1️⃣ Main — 경기 생성 진입점

  • 역할

    • 프로그램 실행 진입점
    • 경기 생성 및 시작
  • 책임

    • Match 객체 생성
    • Match.playGame() 호출
  • 비고

    • 이닝 수, 난이도 선택 등 초기 입력은 Main에서 시작
    • 상세 설정 로직은 MatchConfigs로 위임

2️⃣ MatchConfigs — 경기 세팅 팩토리

  • 역할

    • 경기 세팅 생성 담당
  • 책임

    • 난이도별 경기 설정 생성
    • 이닝 수, 상대 득점 가중치 등 초기 설정 구성
  • 비고

    • 설정 값의 유효성 검증은 하지 않음
    • “어떤 설정을 만들 것인가”에만 집중

3️⃣ MatchConfig — 경기 세팅 검증 담당

  • 역할

    • 경기 설정의 유효성 보장
  • 책임

    • 이닝 수, 난이도, 가중치 등 설정 값 검증
    • 잘못된 설정이 생성되지 않도록 방어
  • 비고

    • 생성 시점에서 검증 완료
    • 이후 로직에서는 신뢰 가능한 설정 객체로 사용

4️⃣ Match — 경기 진행 오케스트레이터

  • 역할

    • 경기 전체 흐름 제어
  • 책임

    • playGame():
      • n이닝 경기 루프 관리
      • 초/말 공격 순서 제어
      • 상대 → 나 / 나 → 상대 흐름 관리
    • 점수 누적 및 경기 종료 판정
  • 구성

    • 상대 공격: WeightedEnemyScorePolicy
    • 내 공격: HalfInning
  • 비고

    • 경기 규칙이나 세부 로직은 직접 처리하지 않음
    • 언제 무엇을 호출할지만 결정하는 오케스트레이터 역할

5️⃣ WeightedEnemyScorePolicy — 상대 득점 정책

  • 역할

    • 상대 팀 공격 시 득점 생성
  • 책임

    • 난이도/이닝에 따른 가중치 기반 득점 생성
    • 랜덤 요소를 포함한 상대 득점 시뮬레이션
  • 비고

    • Match로부터 독립된 정책 객체
    • 향후 다른 득점 정책으로 교체 가능

6️⃣ HalfInning — 한 이닝(공격) 로직 엔진

  • 역할

    • 내 공격 반이닝 처리 전담
  • 책임

    • 타석 진행
    • 주자 상태에 따른 이벤트 처리
      • 도루 시도
      • 타격 스타일 선택
      • 타격 결과 반영
      • 3루 주자 태그업(희생플라이)
  • 구성 시스템

    • StealSystem — 도루 처리
    • BattingDecision — 타격 스타일 선택
    • BatSimulator — 타격 결과 시뮬레이션
    • SacFlySystem — 희생플라이(태그업) 처리
  • 비고

    • Match로부터 분리된 반이닝 전용 엔진
    • 이벤트 확장(번트, 히트앤런 등)에 용이