: 우아한테크코스 프리코스 3주차 - 블랙잭 게임을 진행하는 프로그램을 구현한다.
- 블랙잭은 딜러와 플레이어 중 카드의 합이 21 또는 21에 가장 가까운 숫자를 가지는 쪽이 이기는 게임이다.
- 플레이어는 게임을 시작할 때 배팅 금액을 정한다.
- 카드의 숫자 계산은 카드 숫자를 기본으로 하며, Ace는 1 또는 11로 계산, King, Queen, Jack은 각각 10으로 계산한다.
- 게임을 시작하면 플레이어는 두 장의 카드를 지급 받으며, 두 장의 카드 숫자를 합쳐 21을 초과하지 않으면서 21에 가깝게 만들면 이긴다. 21을 넘지 않을 경우 원한다면 얼마든지 카드를 계속 뽑을 수 있다. 단, 카드를 뽑아 21을 초과할 경우 배팅 금액을 모두 잃게 된다.
- 처음 두 장의 카드 합이 21일 경우 블랙잭이 되어 베팅 금액의 1.5배를 딜러에게 받는다. 딜러와 플레이어가 동시에 블랙잭인 경우 플레이어는 베팅한 금액을 돌려받는다.
- 딜러는 처음에 받은 2장의 합계가 16이하면 반드시 1장의 카드를 추가로 받고, 17점 이상이라면 추가로 받을 수 없다. 딜러가 21을 초과하면 그 시점까지 남아 있던 플레이어들은 가지고 있던 패에 상관없이 승리해 베팅 금액을 받는다.
- 카드와 딜러 객체를 생성한다.
- 플레이어 이름을 쉼표를 기준으로 입력받는다.
- 입력된 이름을 쉼표를 기준으로 분리한다.
- 예외: 입력받은 이름들이 5자 이하의 빈 문자열이 아닌지 검증한다.
- 예외: 입력받은 이름이 5개 이하인지 검증한다.
- 각 플레이어에게 배팅 금액을 입력받는다.
- 예외: 입력받은 배팅 금액이 양의 실수인지 검증한다.
- 플레이어 객체를 생성한다.
- 딜러와 각 플레이어에게 카드를 2장씩 나누어준다.
- 딜러와 플레이어에게 분배한 카드를 확인요청한다.
- 플레이어에게 카드를 추가로 나누어준다.
- 딜러의 카드를 확인해서 합이 16이하이면 카드를 추가로 준다.
- 딜러와 플레이어가 받은 최종 카드와 카드 합을 요청한다.
- 딜러와 플레이어의 승부를 판단한다.
- 승부에 따라 최종 수익을 배분한다.
- 딜러 혹은 플레이어가 블랙잭인지 판단한다.
- 딜러 혹은 플레이어가 버스트인지 판단한다.
- 플레이어가 블랙잭으로 승리, 승리, 무승부 혹은 패배했는지 판단한다.
- 카드를 받는다.
- 받은 카드를 한 장만 보여준다.
- 가지고 있는 카드가 최초의 카드인지 확인한다.
- 카드의 합을 계산한다.
- 가지고 있는 모든 카드와 결과를 보여준다.
- 게임 결과에 따라 정산한다.
- 배팅 금액을 입력한다.
- 카드를 받는다.
- 가지고 있는 카드를 모두 보여준다.
- 가지고 있는 카드가 최초의 카드인지 확인한다.
- 카드를 추가로 받거나 받지 않는다.
- 카드의 합을 계산한다.
- 가지고 있는 모든 카드와 결과를 보여준다.
- 게임 결과에 따라 정산한다.