C 언어 실습

문제

 블랙잭 게임 
- 카드의 숫자는 아래와 같이 생각합니다.
    A 2 3 4 5 6 7 8 9 10 J  Q  K
    1 2 3 4 5 6 7 8 9 10 10 10 10
      모두 사용하기 때문에  52장으로 구성되어 시작합니다.
 
 1. 딜러와 플레이어가 존재합니다.
 2. 게임 시작시 플레이어만 카드 두장을 받습니다. ex ) 5 , J(10)
 3. 받은 카드의 숫자의 합을 계산합니다.          ex ) 5 + J(10) = 15
 4. 플레이어는 계산한 합이 21 넘지 않는다면 카드를 한장  받을  있습니다.
    - 카드를  받을 경우
       플레이어가 카드를  받는다면 가지고 있는 카드의 합을 다시 계산합니다.
       ex ) 5 + J(10) + 3 = 18
       역시 21 넘지 않는다면 계속해서 받을  있고 스탑또한 가능합니다.
       받은 카드의 숫자의 합이 21 넘게 된다면 바로 패배합니다.
       ex ) 5 + J(10) + 7 = 22 (패배)
 5. 카드를 받지 않는다면 스탑후 딜러와 대결을 시작합니다.
 6. 대결을 시작한다면  때부터 딜러가 카드를 뽑기 시작합니다.
 7. 딜러는 카드의 합이 17 넘을  까지 카드를 뽑습니다.
    ex ) Player  (18) / Dealer : 10 + 6 = 16;
         1. Player  (18) / Dealer : 10 + 6 + 3 = 19 (딜러 승리)
         2. Player  (18) / Dealer : 10 + 7 + 5 = 22 (플레이어의 승리)
 8. 위의 예시와 같이 딜러가 카드를 뽑아 21 넘기전에 플레이어의 카드의 합보다
    커지게 된다면 딜러의 승리이며 21 초과하게 된다면 플레이어가 승리합니다.
 -  블랙잭은 21 초과하지 않는 선에서 21 가장 가까운 합이 나온 사람이 승리하는 게임입니다.
 특별한 규칙
 - 1. 21 나오게 된다면 해당은 블랙잭이며 바로 승리하게 됩니다.
 - 2. 1  뽑게된다면 1 1 혹은 11 사용하실  있습니다.
 ex ) 1 + 10 = 21 or 1 + 10 = 11
 - 3. J Q K  모두 10으로 생각합니다.
 - 4. 같은 숫자는 4장을 초과해서는 안됩니다.

학습

1. 셔플 알고리즘 복습: Knuth Shuffle
2. Dealer 에이스 카드 선택 방식 구현
3. 구현, 시뮬레이션
4. 설계도 작성

image

image

댓글남기기