Skip to content

jhk01007/java-blackjack

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

java-blackjack

🎮 직접 정한 규칙

  • 참여자 수는 최소 1명 ~ 최대 7명까지 가능하다.
  • 플레이어 이름 규칙
    • 2글자 이상 10글자 이하
  • 카드 덱은 **1개(52장)**만 사용한다.
  • 최종 결과에는 승리 / 패배 / 무승부가 모두 포함된다.
  • 카드 출력 규칙
    • 히트/스탠드 여부와 상관없이 최초 1회 출력한다.
    • 히트(Hit)로 카드를 새로 받을 때마다 다시 출력한다.
  • 베팅 금액 범위
    • 베팅 금액은 0보다 크고 100만원이하여야 한다.

⚙️ 기능 정리

1️⃣ 플레이어들의 이름을 입력 받는 기능

  • 각 플레이어 이름은 쉼표 ,로 구분해서 받는다.
    • 이름 길이는 2자 이상 10자 이하여야 한다.

2️⃣ 플레이어들의 베팅 금액을 입력받는다. (사이클 2 추가)

  • 베팅 금액은 0보다 크고 100만원이하여야 한다.

3️⃣최초 카드 패를 분배하는 기능

  • 최초의 카드 덱은 카드 52장이 섞여있어야 한다.
  • 딜러와 플레이어에게 카드를 2장씩 나눠준다.
  • 받은 카드를 공개한다.
    • 딜러의 카드는 1장만 공개한다.
  • 각 플레이어의 **블랙잭 여부(A + 10 / J / Q / K)**를 확인한다.

4️⃣히트 & 스탠드 처리 기능

  • 각 플레이어에게 카드를 더 받을지 여부를 입력받는다. ****(Hit: ‘y’, Stand: ‘n’)
    • 플레이어 이름을 입력 받은 순서대로 반복을 진행한다.
    • y를 입력하면 ****덱에서 카드 1장을 뽑아 플레이어 패에 추가한다.
    • 추가된 결과를 출력한다.
    • 버스트 여부를 확인하여, 버스트라면 자동 스탠드, 아니면 다시 해당 과정을 반복한다.
      • 버스트 여부를 확인할 때, A가 포함된 경우 플레이어에게 유리하도록 계산한다.
  • 모든 플레이어 차례가 끝날 때까지 해당 과정을 반복한다.
  • 새 카드가 추가된 패의 내용을 출력한다.

5️⃣ 딜러 추가 뽑기 기능

  • 딜러 패가 16 이하일 경우 17 이상이 될 때까지 카드 1장을 계속 뽑는다.
    • 추가될 때마다 ‘딜러는 16이하라 한장의 카드를 더 받았습니다.’ 메시지를 출력한다.

5️⃣결과 계산

  • 각 플레이어와 딜러의 카드 점수를 합산한다.
    • 플레이어의 점수 계산 시, A가 패에 있다면 플레이어에게 유리하도록 계산한다.
      • 모든 경우가 21 이하라면 그 중 가장 큰 점수를 선택한다.
      • 21 초과 버스트라면 21에 가장 가까운 점수를 선택한다.
  • 카드 종류와 점수를 출력한다.
    • 딜러를 가장 먼저 출력하고, 플레이어는 입력받은 순서대로 출력한다.
  • 딜러 기준으로 승 / 무 / 패를 계산하고 출력한다. (사이클1)
    • 플레이어는 딜러와의 단순 승 / 무 / 패만 출력한다.
  • 딜러 및 각 플레이어의 베팅 수익을 계산한다. (사이클 2추가)
    • 이때, 플레이어가 블랙잭인 경우 베팅금액의 1.5배를 돌려받는다.

📂 프로젝트 디렉토리 구조 (최종)

📁 java
├── 📄 Application.java
├── 📁 constant
│   └── 📄 BlackjackConstant.java
├── 📁 controller
│   └── 📄 BlackjackController.java
├── 📁 domain
│   ├── 📁 card
│   │   ├── 📄 Card.java
│   │   ├── 📄 CardRank.java
│   │   ├── 📄 CardShuffler.java
│   │   ├── 📄 CardSuit.java
│   │   ├── 📄 Deck.java
│   │   └── 📄 Hand.java
│   ├── 📁 pariticipant
│   │   ├── 📄 BettingAmount.java
│   │   ├── 📄 Dealer.java
│   │   ├── 📄 Name.java
│   │   ├── 📄 Participant.java
│   │   ├── 📄 Participants.java
│   │   ├── 📄 Player.java
│   │   └── 📄 Players.java
│   └── 📁 result
│       ├── 📄 DealerMatchResult.java
│       ├── 📄 MatchCase.java
│       ├── 📄 MatchResult.java
│       ├── 📄 PlayersBettingProfit.java
│       └── 📄 PlayersMatchResult.java
├── 📁 exception
│   └── 📄 ErrorMessage.java
├── 📁 infra
│   └── 📄 CardShufflerImpl.java
└── 📁 view
    ├── 📄 InputParser.java
    ├── 📄 InputView.java
    └── 📄 OutputView.java

About

자바로 구현하는 블랙잭

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 100.0%