객체 지향 설계 연습하기 - 블랙잭 (1)

객체 지향 설계 연습하기 - 블랙잭 (1)

github source code

0. 들어가며

  • 업무에 Java를 사용하고 있지만, 깊은 이해도가 부족하다는걸 절감.
  • 단순 객체 생성 및 비즈니스 로직 구현에만 매달리고 있음. 회의감이 듦.
  • 신규 개발 뿐만 아니라 유지 보수 및 리팩토링시 객체 지향의 묘미를 살려보고자 함
  • 객체 지향적 시야와 사고는 연습뿐이라는 것을 여러 커뮤니티에서 수집
  • 객체 지향 설계 연습을 통해 객체 지향적 시야와 이해력을 높이고지 함

1. 왜? 블랙잭?

  • 여러 커뮤니티에서 추천
  • 아래 내용은 개인적인 생각
  • 규칙이 단순, 게임 룰에 따라 게임의 흐름이 단순
  • 하지만, 플레이어 딜러 카드 등등 연관성이 종속적이라 설계 연습에 주효

나무위키 참조

2. 블랙잭 게임 룰

2.1 룰의 배경

  • 무늬 SPADE, CLOVER, HEART, DIAMOND

  • 숫자 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, K, Q, J, A

  • K, Q, J는 10점, A는 1 혹은 11, 둘 중 어느쪽으로 계산될 수 있다. ( 카지노 마다 룰이 다르다.)

  • 참여 인원은 2~8명, 2~8명 중 딜러를 정하거나 임의 딜러를 투입

  • 배팅 배당률은 배팅한 만큼 받는게 기본. 100원을 배팅해 이기면 200원을 얻고 지면 100원을 잃는다.

  • 딜러의 첫 번째 카드를 엎어 놓은 것 이외에는 모든 참가자의 카드가 공개된다.

2.2 기본 룰

  • 카드에 써있는 숫자 그대로 숫자를 더해 21을 만들면 된다.
  • 첫 시작시 카드 두장을 지급 받는다.
  • 처음 받은 두장이 21이 될 경우 블랙잭이라고 하며 보통 베팅액의 2배1.5배를 얻는다.
  • 딜러가 블랙잭인 경우에는 참가자가 베팅한 돈의 전부를 받는다.
  • 딜러와 참가자가 동시에 블랙잭인 경우에 참가자는 대개 베팅한 돈을 돌려받지만, 잃게 되는 경우도 있다.
  • 21이 되지 않을 경우 얼마든지 카드를 뽑을 수 있다.
  • 21 초과 ( 22 이상 )이 될 경우 버스트라고 하며, 딜러의 결과에 상관 없이 무조건 돈을 잃는다.
  • 카드를 더 받지 않는 것이 유리하다고 판단되면 추가하지 않아도 된다. 예를 들면, Q와 9을 받아 19점인 경우에 1장을 더 추가하면 21점을 초과할 염려가 있기 때문에 그 상태에서 카드를 더 받지 않고 그칠 수 있다.
  • 딜러는 참가자들의 추가가 모두 끝난 뒤에 자신이 카드를 추가할 것인지 여부를 결정한다.
  • 정식 규칙에서 딜러는 가진 카드의 합계가 16점 이하이면 반드시 1장을 추가해야 하고, 17점 이상이면 추가할 수 없게 되어 있다.
  • 딜러의 점수와 비교해서 동점이면 무승부, 딜러보다 높으면 이기고 낮으면 지게 된다.
  • 합계가 21점을 초과하면 0점으로 간주되는데, 딜러가 21점을 초과한 경우도 0점이 되지만, 21점을 초과한 참가자의 베팅액을 딸 수 있다.

2.3 게임의 흐름

  • 배팅 금액을 정한다.
  • 딜러를 정해야 하며, 딜러는 딜러 기준 왼쪽으로 1장씩 2번을 돌려 각자 2장씩 가지게 한다.
  • 딜러의 첫번째 카드 외 모든 유저의 카드는 오픈한다.
  • 각자 판단 하에 카드를 요구한다.

2.4 게임 내 규칙

Hit - 히트

  • 처음 2장의 카드 상태에서 카드를 더 뽑는 것을 HIT라고 한다.
  • 제스쳐로는 검지 손가락으로 테이블을 톡 내려주면 된다.
  • 21이 되지 않는 한 얼마든지 카드를 뽑을 수 있다.
  • 21이 넘으면 무조건 진다.
  • 카드 숫자 합이 17이 되지 않으면 무조건 카드를 뽑아야 하는데, 해당 규칙은 딜러에게도 해당한다.
  • 따라서 딜러가 17이 되기 전까지는 무조건 카드를 받아야 한다.
  • 내가 이기지 않아도, 딜러가 지면 이긴다.

stand, stay - 스탠드, 스테이

  • 카드를 뽑지 않고 턴을 종료한다.
  • 제스쳐는 손등을 위로 보이게 한뒤, 테이블을 한번 훝는다.

split - 스플릿

  • 처음 받은 2장의 카드가 같은 숫자 또는 같은 그림일 경우, 패를 두개로 나누어 두개의 게임을 동시에 진행할수 있다.
  • 이후 또 똑같은 숫자가 나오면 똑같이 계속 스플릿을 진행할 수 있다.
  • 제스처로는 검지와 중지를 테이블에 향하여 친후 손가락을 떼면서 패를 나누는 듯한 제스쳐. 블랙잭용어는 기본적으로 딜러들이 다 알기때문에 ‘스플릿’ 이라고 말만해도 다 알아먹는다. 그러면 딜러가 확인차 자기 손가락으로 스플릿제스쳐를 취하면 맞다고 고개한번 끄덕거려주면 만사오케이. 그리고 애초에 스플릿이 아무때나 되는게 아니고 대부분 (8,8), (9,9) (A.A) 에만 하기때문에.
  • 블랙잭은 기본이 카드를 두장 받는것이므로 각각 한장씩 더 받게 된다.스플릿은 A를 제외하고는 3번까지 가능하다.(즉 4개의 게임으로 나누는것까지 가능하다.) (A같은경우는 카지노마다 룰이 다르다.)
  • 참고로 에이스를 스플릿해서 A,10이 나왔어도 블랙잭처럼 1.5배를 주는것은 아니고 그냥 21로 계산해서 1배만 준다. 다만, 딜러가 블랙잭이 나온경우 플레이어는 패하게되고, 딜러의 숫자합이 블랙잭이 아닌 21일경우 무승부로 인정되어 베팅금액을 다시 돌려준다.

Double Down - 더블 다운

  • 돈을 두 배로 거는 것.
  • 제스쳐로는 베팅금을 더 걸면서 검지와 중지 손가락 두개를 테이블을 향하여 톡 친다.
  • 본래 합이 21이 넘지 않는 한 무제한으로 뽑을 수 있는 카드를 이후 단 하나만 더받는 조건으로 돈을 두 배로 걸 수 있다.
  • 따라서 일반적으로 두 장을 합쳐서 한 10이나 11일 경우에 더블다운을 하는 시나리오가 일반적으로 제일 좋다.
  • 좀더 확률상 높이자면 딜러가 버스트할 확률이 높은 상황 + 내 패가 10,11 정도면 더블을 성공할 확률이 매우 높아진다(확률상 숫자 10에 해당하는 10,J,Q,K가 나올 확률이 제일 높기 때문이고 설사 이 녀석들이 나오지 않는다 해도 딜러가 버스트 할 확률이 높기 때문이다).

bust - 버스트

  • 카드 총합이 21을 넘는 경우.
  • 플레이어가 버스트 당하면 경기 흐름에 상관없이 바로 배당금을 잃는다.
  • 즉 12에서 10을 뽑아 22가 되는 사고로도 버스트 되어 패배한다.
  • 이는 플레이어 뿐만 아니라 딜러에게도 해당되기 때문에 플레이어가 꼬인 패를 갖고 있다고 해서 그 판에 대해 아예 손을 놓을 수 없게 만드는 규칙이기도 하다.
  • 특히 딜러는 매장 내에서 정한 ‘언더 오버’ 수치로 인해 언더 아래의 숫자인 패일 경우 반드시 뽑아야하기 때문에 살아있는 다른 플레이어들이 카드를 넘기는 순간에는 땀을 쥐게 된다.
  • 딜러가 버스트 당하면 그 시점까지 살아있던 다른 플레이어들은 갖고 있는 패에 상관 없이 승리하기에 이미 죽은 플레이어는 자신의 머리를 잡는다.

black jack

  • 게임내 가장 높은 가치.
  • Ace 한장과 10에 해당하는 패(10,J,Q,K)로 21을 이루는 경우 베팅금액의 1.5배를 돌려준다.
  • 원래 이기는 룰대로 두배로 이기는 경우도 있다.
  • 딜러도 블랙잭이 아닌 이상 무조건적인 승리.
  • Ace혹은 10에 해당하는 패를 스플릿 해서 진행한 경우 A + 10의 조합이 나오더라도 블랙잭으로 인정하지 않고 21로 계산한다.
  • 에이텐은 플레이어에게 이로운 규칙이라서 카지노 측에서 적용시키기 꺼려하는 규칙이라고 하나, 일부에서는 그대로 적용해주는 곳도 있다고 한다.

2.5 추가 규칙

인셔런스(Insurance)

  • 딜러가 오픈한 첫 카드가 에이스일 경우, 블랙잭이 나올 가능성에 대비해 보험을 들어두는 것을 말한다.
  • 건 금액의 절반(절반은 상한일뿐이고 절반이하를 지불하는것도 가능하다.)을 인셔런스로 지불하게 되며 만약 딜러가 블랙잭일 경우 보험금의 2배를 보험수당으로 지불한다.
  • 물론 기존의 베팅금은 딜러가 가져가게되므로 인셔런스 성공시 본전회수가 된다.
  • 베팅금이 100원일경우 보험금은 50원해서 총 150원을 소모하게 되며, 베팅금 100원은 잃고 보험금 50원은 승리해 50원의 2배인 100원을 벌면 총 150원으로 처음과 동일한 본전치기가 된다.
  • 만약 딜러가 블랙잭이 아닐 경우엔 보험으로 걸어둔 금액을 잃게 된다.
  • 내 패가 19,20일 경우라면 보험금은 잃더라도 게임에는 승리할 확률이 무척 높으니 이경우에만 걸어볼만하다. 내가 19,20 이 아닐 경우에 인셔런스를 건다면, 내 패도 잃고 인셔런스도 잃는 경우가 매우 많다.
  • 내 패가 19,20이 아닌 경우에는 깔끔하게 판돈만 잃을 생각으로 인셔런스를 걸지 않도록 하자.

푸시(Push)

  • 특수적으로 넣는 경우가 있다.
  • 원래 동점일경우 플레이어가 이기지만, 카지노측의 확률을 높이기 위함이다.
  • 딜러와 플레이어의 총합이 같을 경우 베팅금을 그대로 다시 돌려받는다.
  • 하지만, 블랙잭은 총합 21과는 다른 개념으로 블랙잭이 21보다 높은 가치이다.
  • 애초에 딜러가 블랙잭이면 내가 블랙잭이 아닌이상 지기때문에 카드를 더 받아서 21을 만들어 볼 수도 없다 딜러가 플레이어들로부터 원금을 걷어갈때 푸시인 경우 딜러가 손마디로 테이블을 1~2회 두드리면서 푸시임을 플레이어에게 상기시켜준다.

이븐 머니(Even Money)

  • 플레이어가 블랙잭이 나오고, 딜러의 보여진 패가 Ace인경우 딜러가 블랙잭이 나온 플레이어에게 이븐머니를 물어본다.

  • 베팅한 금액과 동일한 금액을 승리수당으로 받고 게임을 종료할 것인지, 아니면 블랙잭의 효과(1.5배)를 그대로 유지하면서 게임을 계속 진행할 것인지에 대해 선택을 하는 것.

  • 이븐머니를 선택할 경우 딜러의 블랙잭 여부와 상관없이 바로 1배의 승리수당을 받고.

  • 해당플레이어의 게임을 종료, 이븐머니를 선택하지 않을 경우 계속해서 게임을 진행한다.

  • 게임을 진행한 후 딜러가 블랙잭일경우 Push로 그냥 비겨버리고, 딜러가 블랙잭이 아닌 경우에는 일반적인 블랙잭처럼 1.5배의 수당을 받는다.

  • 그런데 말로는 ‘이븐머니’ 라고 거창하지만 실상을 들여다보면 이븐머니를 선택하는것은 인셔런스를 택하는것과 다를바가없다. 쉬운 이해를 위해 내가 1000원을 걸어서 블랙잭이 나왔는데 인슈어런스를 선택하는상황을 가정해보자.

  • 상황1. 인슈어런스하지않고 이븐머니를 결정한경우 - 이븐머니로 1000원을 받아서 1000원이 이익이다.

  • 상황2. 인슈어런스했는데 딜러가 블랙잭인경우 - 인슈어런스로 1500원을받는데 여기서 500원은 내가 인슈어런스걸었던금액이므로 1000원이 이익이다.

  • 상황3. 인슈어런스했는데 딜러가 블랙잭이 아닌경우 - 블랙잭(1.5배)으로 1500원을 따지만 인슈어런스로 지불한 500원은 딜러에게회수되므로 1000원이 이익이다.

  • 결국 이븐머니를 택하는것은 인슈어런스를 고르는것과 다를바가없다. 다만 일반적인 인슈어런스는 많이 선택하지않는데비해 이븐머니는 선택률이 꽤나높다.

  • 왜냐면 블랙잭나왔는데 한푼도 못따면(이븐머니안했는데 딜러도 블랙잭나와서 비기면) 기분 잡치니까..

  • 하나의 예를 들면 안전한 1000원 vs 불안정하지만 0원이랑 1500원 중 골라잡는 쫄깃한 선택지다.

서렌더(Surrender)

  • 플레이어가 게임을 포기하고, 베팅액의 절반을 돌려 받는 규칙이다. ‘다이’를 쳐도 조금이나마 돌려받을 수 있는 규칙이나, 딜러가 블랙잭을 터뜨렸을 경우 선언권이 막혀 그대로 패배한다.

2.6 딜러 규칙

딜러는 플레이어의 패를 보고 히트할지 스테이할지를 결정하는 것이 아니라, 단순한 규칙에 따라 플레이 한다. 딜러가 기계적으로 플레이하게 만들어, 딜러의 주관적인 개입을 막는 것이 목적이다.

  • 16 이하면 무조건 히트, 17 이상이면 무조건 스테이

  • 플레이어가 15에서 스테이했고, 딜러는 16일때, 딜러가 스테이하면 플레이어를 이길 수 있다. 하지만, 딜러는 의무적으로 버스트의 위험을 감수하고 무조건 히트해야 한다.

  • 플레이어가 18에서 스테이했고, 딜러는 17일때, 딜러가 히트를 해서 A~4 의 카드가 나오면 비기거나 이길 수 있다. 하지만, 딜러는 히트할 수 없고, 스테이해야 한다.

  • 당연하지만, 딜러는 스플릿, 더블다운, 서렌더, 인셔런스 등을 할 수 없다. 이것들은 플레이어를 위한 규칙이다.

  • 딜러는 버스트 되지 않는 한, A 는 11로 카운트 한다. 예를 들어 A-6 이라면 17이 되며, 딜러 규칙에 의해서 무조건 스테이한다는 것을 의미한다.

  • 단, 일부 카지노에서는 딜러가 소프트 17, 즉 A-6의 경우에도 히트하는 경우도 있다. 이를 Hit soft 17, 혹은 줄여서 h17 이라고 한다. 플레이 하기전 알아볼 것. [11]

2.7 기타 규칙

실전에서는 보통 사용되지 않는 규칙들이며, 친선 게임이나 비디오게임 등에서 사용되는 규칙들이다. 비디오게임에서는 보통 아래와 같은 패에서는 더 높은 배당을 지급한다. 그냥 재미로 알아 두면 좋다.

원아이드잭(One-eyed jack)

  • 플레잉 카드를 잘 보면 스페이드J 와 하트J 는 얼굴이 옆면으로 되어 있어서 눈이 한쪽만 보인다.
  • 그래서, 이 2장의 카드를 원아이드잭이라 부른다.
  • 원아이드잭과 같은 무늬의 A 가 조합된 블랙잭은 더 등급이 높은 블랙잭으로 취급한다.

777

  • 7 세장으로 21을 만드는 경우, 블랙잭과 동등 또는 그 이상의 등급으로 인정한다.슬롯머신에서 777 이 나오면 잭팟! 인생역전

파이브 카드 찰리(Five card Charlie)

  • 3장을 히트해서 패가 5장이 되는 것을 의미하며, 버스트가 되지 않아야 한다.
  • 이때 적용되는 규칙은 여러가지가 있는데, 어떤 것이든 플레이어에게 유리하다. 호주의 멜버른에 있는 ‘크라운 카지노’에서는 이 룰이 적용된다.
  • 아래 n-카드 찰리 규칙 규칙 참고.

식스 카드 찰리(Six card Charlie)

  • 4장을 히트해서 패가 6장이 되는 것을 의미하며, 역시 버스트가 되지 않아야 한다.
  • 파이브카드 찰리는 그나마 자주 나오기에, 좀더 조건을 강화해서 6장을 기준으로 하는 경우이다.

n-카드 찰리 규칙

  • 플레이어가 5장(or 6장)을 만들고, 딜러가 블랙잭이 아니라면 딜러의 패와 상관없이 플레이어가 이긴다. 단, 딜러가 블랙잭일 경우는 딜러가 승리한다.

  • 반대로, 딜러가 5장(or 6장)이 되는 경우, 무조건 플레이어가 승리한다. 단, 버스트된 플레이어는 제외된다. 즉, 딜러 버스트와 동일하다.[13]

  • 일부 비디오게임에서는 플레이어가 5장 이상일 경우, 카드 수에 따라 2배씩 계속 배당이 증가하기도 한다.

  • 단 5장이면 2배, 6장이면 4배, 7장이면 8배의 배당을 지급한다. [14] 단, 이 경우는 무조건 승리하는 것은 아니며, 숫자합으로 딜러를 이겨야 한다. 딜러가 블랙잭이면 말짱 꽝

딜러 무제한 스테이 규칙

  • 딜러는 자신의 숫자의 합이 플레이어보다 유리하면 언제든지 스테이할 수 있는 사기적인 규칙[15]. 일부 비디오게임에 적용되어 있다.

끝으로 마지막 할말

나무 위키를 보며, 규칙을 익혔지만 생각보다 적용되는 룰이 많고 복잡하다…

본 문서는 나무 위키의 블랙잭 자료가 출처임을 밝힙니다.