/java-blackjack

블랙잭 미션 저장소

Primary LanguageJava

java-blackjack

블랙잭 미션 저장소

Participants

  • BE_마루
  • BE_앤지

About Mission

기능 요구 사항

블랙잭 게임을 변형한 프로그램을 구현한다.
블랙잭 게임은 딜러와 플레이어 중 카드의 합이 21 또는 21에 가장 가까운 숫자를 가지는 쪽이 이기는 게임이다.

카드의 숫자 계산은 카드 숫자를 기본으로 하며, 예외로 Ace는 1 또는 11로 계산할 수 있으며, King, Queen, Jack은 각각 10으로 계산한다.
게임을 시작하면 플레이어는 두 장의 카드를 지급 받으며, 두 장의 카드 숫자를 합쳐 21을 초과하지 않으면서 21에 가깝게 만들면 이긴다.
21을 넘지 않을 경우 원한다면 얼마든지 카드를 계속 뽑을 수 있다.
딜러는 처음에 받은 2장의 합계가 16이하이면 반드시 1장의 카드를 추가로 받아야 하고, 17점 이상이면 추가로 받을 수 없다.
게임을 완료한 후 각 플레이어별로 승패를 출력한다.

실행 결과

게임에 참여할 사람의 이름을 입력하세요.(쉼표 기준으로 분리)
pobi,jason

딜러와 pobi, jason에게 2장을 나누었습니다.
딜러: 3다이아몬드
pobi카드: 2하트, 8스페이드
jason카드: 7클로버, K스페이드

pobi는 한장의 카드를 더 받겠습니까?(예는 y, 아니오는 n)
y
pobi카드: 2하트, 8스페이드, A클로버
pobi는 한장의 카드를 더 받겠습니까?(예는 y, 아니오는 n)
n
jason은 한장의 카드를 더 받겠습니까?(예는 y, 아니오는 n)
n
jason카드: 7클로버, K스페이드

딜러는 16이하라 한장의 카드를 더 받았습니다.

딜러 카드: 3다이아몬드, 9클로버, 8다이아몬드 - 결과: 20
pobi카드: 2하트, 8스페이드, A클로버 - 결과: 21
jason카드: 7클로버, K스페이드 - 결과: 17

## 최종 승패
딜러: 1승 1패
pobi: 승
jason: 패

기능목록

  • 참여할 사람의 이름을 입력받는다.

    • 쉼표를 기준으로 이름을 분리한다.
    • 예외사항
      • 이름에 아무것도 들어오지 않을 때(공백)
      • 쉼표만 입력 받았을 때
      • 플레이어 인원이 1~8이 아닐 때
  • 참여자들에게 카드를 두장씩 나누어준다.

  • 참여자들은 자신의 카드를 오픈한다.

    • 딜러는 한장만 오픈한다.
    • 플레이어는 두장을 다 오픈한다.
  • 플레이어들은 카드를 더 받을지 결정하고 출력한다.

    • 플레이어의 카드의 합이 21미만일 때만 카드를 더 받을 것인지를 물어본다.
      • 에이스를 가진 경우 1, 11 두 상황 다 계산하여 하나라도 가능하면 받을 수 있을지 물어본다.
    • 플레이어가 y를 입력하면 카드를 더 받는다.
    • 플레이어가 n을 입력하면 카드를 더 받지 않는다.
    • 예외사항
      • y혹은 n을 입력받지 않았을 때
  • 딜러의 합계가 16이하이면 16을 넘을 때 까지 카드를 계속 받는다.

  • 플레이어가 가진 카드의 숫자의 합을 계산하고 출력한다.

    • 에이스는 유리한쪽으로 계산한다.
  • 승패를 출력하는 기능

    • 딜러와 플레이어의 카드의 합이 모두 21을 초과할 경우: 플레이어 패배
    • 딜러와 플레이어의 카드의 합이 같을 경우: 무승부
    • 딜러만 카드의 합이 21을 초과할 경우: 플레이어 승리
    • 플레이어만 카드의 합이 21을 초과할 경우: 딜러 승리
    • 플레이어의 카드의 합이 21을 초과하지않으면서 딜러보다 클 경우: 플레이어 승리
    • 딜러는 모든 플레이어에 대해 승패의 합을 출력한다.
    • 플레이어는 딜러를 기준으로 승패를 출력한다.
  • 배팅 기능

    • 플레이어에게 배팅금액을 입력받는다.
    • 플레이어 처음 두 장의 카드 합이 21일 경우 블랙잭이 되면 베팅 금액의 1.5 배를 딜러에게 받는다.
      • 딜러와 플레이어가 모두 동시에 블랙잭인 경우 플레이어는 베팅한 금액을 돌려받는다.
    • 카드를 추가로 뽑아 21을 초과할 경우 배팅 금액을 모두 잃게 된다. 즉, 플레이어 패배
    • 배팅금액 계산 룰
      • 플레이어가 100원을 걸어 이기면 200원을 받는다. 즉 100원의 수익.
      • 플레이어가 100원을 걸어 지면 100원을 잃는다. 즉 수익은 -100원
      • 플레이어가 100원을 걸었을 때, 딜러와 플레이어 모두 블랙잭이면 100원을 돌려받는다. 0원의 수익
      • 플레이어가 100원을 걸었을 때, 플레이어만 블랙잭이면 100원*1.5 = 150원의 돈을 딜러에게 받는다.
        • 딜러 수익: -150원
        • 플레이어의 수익: 150원
      • 무승부인 경우 배팅금액을 돌려받는다. 즉 수익은 0원.

블랙잭 용어 정리

  • 힛(Hit)
    • 처음 2장의 상태에서 카드를 더 뽑는 것을 의미한다.
    • 21이 되지 않는 한 원하는 만큼 카드를 더 뽑을 수 있다.
  • Dealer's hit rule
    • 딜러의 카드의 합이 21을 초과하여 버스트가 되어버린 경우
  • 버스트(Bust)
    • 카드 총합이 21을 넘는 경우 이를 Bust라고 한다.

우아한테크코스 코드리뷰