- Java로 구현한 블랙잭 게임입니다.
- TDD와 Pair Programming을 통해 구현했습니다.
게임에 참여할 사람의 이름을 입력하세요.(쉼표 기준으로 분리)
pobi,jason
pobi의 배팅 금액은?
10000
jason의 배팅 금액은?
20000
딜러와 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
## 최종 수익
딜러: 10000
pobi: 10000
jason: -20000
- 게임에 참여할 플레이어를 입력받는다.
- 카드를 추가로 받을지 여부를 입력 받는다.
- 입력 값이 (y / n) 이외의 값인 경우 예외가 발생한다.
- 입력 값이 null 이거나 empty인 경우 예외가 발생한다.
- 초기 카드 배분 안내 메시지를 출력한다.
- 딜러와 플레이어의 초기 카드를 출력한다.
- 딜러는 첫 번째 1장, 플레이어는 2장 모두 출력한다.
- 플레이어에게 추가 카드 배분 안내 메시지를 출력한다.
- 카드를 추가로 받은 경우, 플레이어의 전체 카드를 출력한다.
- 카드를 추가로 한 번도 받지 않은 경우, 플레이어의 전체 카드를 출력한다.
- 딜러의 카드 합에 따라, 추가 카드 배분 여부 안내 메시지를 출력한다.
- 딜러와 전체 플레이어의 최종 카드와 합을 출력한다.
- 최종 승패를 출력한다.
-
카드 무늬
- 스페이스, 다이아몬드, 하트, 클럽 4 가지의 무늬를 갖는다.
-
카드
- 무늬, 값, 시그니처를 갖는다.
- 에이스 카드는 1 또는 11 카드 값을 결정해서 반환한다.
-
카드 모음
- 카드 합을 계산한다.
-
덱
- 무늬별로 숫자, 메이저, 에이스 카드를 총 52장의 카드를 갖는다.
- 카드를 섞는다.
- 중복되지 않는 숫자, 메이저, 에이스 카드를 1장을 반환한다.
- 초기 딜을 위한 중복되지 않는 카드 2장을 반환한다.
- 남은 카드 개수를 확인한다.
-
테이블
- 딜러에게 초기 카드 배분한다.
- 딜러의 추가 카드 배분을 진행한다.
-
딜러
- 처음 받은 카드를 오픈한다.
- 딜러의 카드 합이 16 이하인 경우 한 장의 카드를 추가한다.
-
플레이어
- 모든 패를 오픈한다.
- 카드를 한 장씩 추가한다.
-
블랙잭 게임
- 테이블을 생성한다.
- 플레이어에게 초기 카드를 배분한다.
- 플레이어의 hit / stand 여부에 따라 카드를 추가한다.
-
게임 승패
- 딜러와 플레이어의 카드 합을 비교한다.
- 카드의 합이 21을 넘는 경우, 패한다.
- 카드가 블랙잭인 경우 승한다.
- 카드 합을 비교하여, 카드의 합이 21과 가까운 경우 승한다.
- 카드 합을 비교하여, 카드의 합이 같은 경우 무승부다.
- 모든 플레이어와 비교하여 딜러의 승/패/무 횟수를 반환한다.
- 딜러와 플레이어의 카드 합을 비교한다.