java-blackjack

블랙잭 게임 미션 저장소

기능 요구 사항

도메인

[닉네임]

  • 닉네임 생성
    • 이름 한 글자 이상

[참가자]

  • 참가자 생성
    • 쉼표 기준으로 분리
    • 참가 2명 ~ 8명
    • 중복 참가자 예외처리

[베팅 금액]

  • 숫자여야한다.
  • 0보다 커야한다.
  • 정수여야한다.

[카드]

  • 카드 문양, 번호 ENUM
  • 카드 문양, 번호

[카드 덱]

  • 서로 다른 52장의 카드를 생성
  • 카드를 드로우 할 수 있다.

[카드 꾸러미]

  • 여러 장의 카드를 가질 수 있는 일급 컬렉션

[플레이어, 딜러 - 추상 클래스] Person

  • Player와 Dealer의 추상 클래스
  • 카드를 추가할 수 있다.
  • 보유한 카드를 가져올 수 있다.
  • 보유한 카드로 점수를 계산할 수 있다. Player, Dealer

[게임 결과]

  • 딜러와 플레이어간의 승 패 결과

[상태]

  • BlackJack 처음 2 카드 합이 21
  • Bust 카드 합이 21을 넘는 경우
  • Stay 카드를 뽑고 난후 21점 사용자가 n 입력
  • Hit
    • 플레이어
      • 카드합이 21보다 작은 경우
    • 딜러
      • 카드합이 16보다 작은 경우

게임 진행

[베팅 금액 입력]

  • 참여자별로 베팅 금액 입력받기

[카드 분배]

  • 딜러와 플레이어에게 카드 2장씩 분배
  • 딜러 카드는 1장만 공개
  • 분배한 카드는 덱에서 제거

[카드 추가]

  • 플레이어에게 카드를 더 받을 지 물어보기
    • 입력은 y나 n 둘 중 하나
    • 카드 합에 따라 달라진다.
      • y : [x] 새로운 카드를 뽑기, 현재 보유 카드 출력
      • n : [x] 현재 보유 카드 출력
  • 딜러의 카드 합이 16이하면 17이상이 될 때까지 카드 추가

[게임 결과]

  • 딜러와 플레이어가 가진 카드와 합 출력
    • Ace 카드는 1이나 11으로 계산
      • 21을 넘지 않는 선에서 21에 가깝게 계산
    • K,Q,J는 10으로 계산
  • 최종 승패 출력
    • 각 플레이어와 딜러 점수 비교
      • 플레이어 승
        • 플레이어 카드 합이 21이 넘지 않으면서 딜러보다 높은 경우
        • 딜러 카드 합이 21을 넘고 플레이어 카드합이 21을 넘지 않은 경우
      • 딜러 승
        • 딜러 카드 합이 21이 넘지 않으면서 플레이어보다 21에 가까운 경우
        • 플레이어 카드 합이 21을 넘는 경우
      • 무승부
        • 딜러와 플레이어 카드 합이 둘다 21을 넘는 경우
        • 딜러와 플레이어 카드 합이 같은 경우