블랙잭 게임을 변형한 프로그램을 구현한다. 블랙잭 게임은 딜러와 플레이어 중 카드의 합이 21 또는 21에 가장 가까운 숫자를 가지는 쪽이 이기는 게임이다.
- 플레이어는 게임을 시작할 때 베팅 금액을 정해야 한다.
- 카드의 숫자 계산은 카드 숫자를 기본으로 하며, 예외로 Ace는 1 또는 11로 계산할 수 있으며, King, Queen, Jack은 각각 10으로 계산한다.
- 게임을 시작하면 플레이어는 두 장의 카드를 지급 받으며, 두 장의 카드 숫자를 합쳐 21을 초과하지 않으면서 21에 가깝게 만들면 이긴다. 21을 넘지 않을 경우 원한다면 얼마든지 카드를 계속 뽑을 수 있다.
- 처음 두 장의 카드 합이 21일 경우 블랙잭이 되면 베팅 금액의 1.5 배를 딜러에게 받는다. 딜러와 플레이어가 모두 동시에 블랙잭인 경우 플레이어는 베팅한 금액을 돌려받는다.
- 딜러는 처음에 받은 2장의 합계가 16이하이면 반드시 1장의 카드를 추가로 받아야 하고, 17점 이상이면 추가로 받을 수 없다.
- 딜러가 21을 초과하면 그 시점까지 남아 있던 플레이어들은 가지고 있는 패에 상관 없이 승리해 베팅 금액을 받는다.
- 카드
- Ace(1 or 11), 2 ~ 10, King, Queen, Jack은 10의 숫자값을 가진다.
- 하트, 다이아, 스페이드, 클로버 4 종류의 모양 중 하나를 가진다.
- 카드 리스트
- 카드들을 가질 수 있고, 카드 수를 가져온다.
- 카드를 추가할 수 있다.
- 카드의 점수를 카운팅한다.
- 카드의 합이 21이 넘으면 ACE 카드는 11로, 넘지않으면 1로 계산된다.
- 덱
- 전체 카드 총 52장을 가진다.
- 참가자
- 이름을 가진다.
- 배팅 금액을 정한다.
- 딜러가 분배한 카드를 가질 수 있다.
- 가지고 있는 카드 점수를 카운팅한다.
- 카드를 추가로 받을 수 있다.
- 최초 2장의 카드의 합산이 21이면 블랙잭이다.
- 카드의 합산이 21 초과시 더 이상 게임에 참가할 수 없다.
- 블랙잭 완성 시 배팅 금액이 1.5배 배당을 받는다.
- 딜러
- 딜러라는 이름을 기본으로 가진다.
- Deck 셔플 할 수 있다.
- 딜러는 처음에 받은 2장의 합계가 16 이하이면 1장의 카드를 추가로 받고, 17점 이상이면 추가로 받을 수 없다(스테이).
- 가지고 있는 카드 점수를 카운팅한다.
- 최초 2장의 카드의 합산이 21이면 블랙잭이다.
- 카드의 합산이 21 초과시 더 이상 게임이 종료된다.
- 게임
- 딜러와 참가자들을 가진다.
- 게임 시작시 2장의 카드를 참가자들에게 분배한다.
- 참가자에게 카드를 분배 후 딜러도 2장의 카드를 가진다.
- 딜러의 게임 결과를 계산한다.
- 게임 참가자들별 결과를 계산한다.
- 게임 결과
- 딜러의 게임 결과 값을 가지고 있다.
-
게임 참가자들별 결과 값을 가지고 있다. - 딜러, 플리에어 둘다 블랙잭인 경우 플레이어는 배당금을 돌려받는다.
- 플레이어가 블랙잭이고 딜러가 블랙잭이 아닌 경우 플레이어는 배당금을 1.5배 받는다.
- 플레이어가 블랙잭이 아닌 경우 딜러의 결과에 따라 배당금을 받는다.
- 플레이어가 21을 초과한 경우(버스트) 배당금을 받지 못한다.
- 입력
- 플레이어 이름을 쉼표로 구분하여 입력받는다.(최소 2명, 최대 8명)
- 추가로 카드를 받을지의 여부를 입력받는다.
- 출력
- 참가자가 보유한 카드들을 출력한다.
- 게임 시작시 2장을 분배하고 결과값을 출력한다.
-
게임 결과(카드 결과, 참가자별 승무패)를 출력한다. - 딜러, 플레이어 각각 최종 수입을 출력한다.