Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
0f7288a
feat: ์ˆ˜์ต ๊ด€๋ จ Dto ํด๋ž˜์Šค ์ถ”๊ฐ€
yItWorks Mar 11, 2026
251dc19
feat: ์›์‹œ ๊ฐ’์„ ํฌ์žฅํ•œ Name ์ถ”๊ฐ€
yItWorks Mar 12, 2026
a8a3abf
feat: ํ”Œ๋ ˆ์ด์–ด ์ด๋ฆ„ ํด๋ž˜์Šค ์ถ”๊ฐ€
yItWorks Mar 12, 2026
7d2601f
refactor: ํ”Œ๋ ˆ์ด์–ด ์ด๋ฆ„ ํด๋ž˜์Šค ์ถ”๊ฐ€์— ๋”ฐ๋ฅธ ์ฝ”๋“œ ์ˆ˜์ •
yItWorks Mar 12, 2026
533543e
test: Nickname ํด๋ž˜์Šค ์ถ”๊ฐ€์— ๋”ฐ๋ฅธ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ณ€๊ฒฝ
yItWorks Mar 12, 2026
4d1f541
refactor: hand ํ•„๋“œ private ์ ‘๊ทผ ์ œํ•œ์ž๋กœ ๋ณ€๊ฒฝ
yItWorks Mar 12, 2026
5b33d32
refactor: DealerName ํด๋ž˜์Šค ์ถ”๊ฐ€
yItWorks Mar 12, 2026
d04daa5
test: ๋ฐฐํŒ… ๊ธˆ์•ก ์ฒ˜๋ฆฌ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
yItWorks Mar 13, 2026
960f50b
feat: ๋ฐฐํŒ… ๊ธˆ์•ก ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
yItWorks Mar 13, 2026
b7a75e8
test: ๊ฒŒ์ž„ ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅธ ๋ฐฐํŒ… ๊ธˆ์•ก ์ฒ˜๋ฆฌ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
yItWorks Mar 13, 2026
3536bed
test: ๋ธ”๋ž™์žญ ์ถ”๊ฐ€๋กœ ์ธํ•œ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
yItWorks Mar 13, 2026
4136b16
feat: ๊ฒŒ์ž„ ๊ฒฐ๊ณผ์— "๋ธ”๋ž™์žญ" ์ถ”๊ฐ€
yItWorks Mar 13, 2026
bbd30ea
fix: Name ์ถ”๊ฐ€๋กœ ์ธํ•œ ์ฝ”๋“œ ์ˆ˜์ •
yItWorks Mar 13, 2026
406f09a
chore: domain ๊ณ„์ธต ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ์žฌ๋ฐฐ์น˜
yItWorks Mar 13, 2026
e9e35e0
docs: update README.md
yItWorks Mar 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 27 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@
๋ธ”๋ž™์žญ ๊ฒŒ์ž„์„ ๋ณ€ํ˜•ํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•œ๋‹ค.
๋ธ”๋ž™์žญ ๊ฒŒ์ž„์€ ๋”œ๋Ÿฌ์™€ ํ”Œ๋ ˆ์ด์–ด ์ค‘ ์นด๋“œ์˜ ํ•ฉ์ด 21 ๋˜๋Š” 21์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ˆซ์ž๋ฅผ ๊ฐ€์ง€๋Š” ์ชฝ์ด ์ด๊ธฐ๋Š” ๊ฒŒ์ž„์ด๋‹ค.

- ํ”Œ๋ ˆ์ด์–ด๋Š” ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•  ๋•Œ ๋ฐฐํŒ… ๊ธˆ์•ก์„ ์ •ํ•ด์•ผ ํ•œ๋‹ค.
- ์นด๋“œ์˜ ์ˆซ์ž ๊ณ„์‚ฐ์€ ์นด๋“œ ์ˆซ์ž๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๋ฉฐ, ์˜ˆ์™ธ๋กœ Ace๋Š” 1 ๋˜๋Š” 11๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, King, Queen, Jack์€ ๊ฐ๊ฐ 10์œผ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.
- ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•˜๋ฉด ํ”Œ๋ ˆ์ด์–ด๋Š” ๋‘ ์žฅ์˜ ์นด๋“œ๋ฅผ ์ง€๊ธ‰ ๋ฐ›์œผ๋ฉฐ, ๋‘ ์žฅ์˜ ์นด๋“œ ์ˆซ์ž๋ฅผ ํ•ฉ์ณ 21์„ ์ดˆ๊ณผํ•˜์ง€ ์•Š์œผ๋ฉด์„œ 21์— ๊ฐ€๊น๊ฒŒ ๋งŒ๋“ค๋ฉด ์ด๊ธด๋‹ค. 21์„ ๋„˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์›ํ•œ๋‹ค๋ฉด ์–ผ๋งˆ๋“ ์ง€ ์นด๋“œ๋ฅผ ๊ณ„์† ๋ฝ‘์„ ์ˆ˜ ์žˆ๋‹ค.
- ๋”œ๋Ÿฌ๋Š” ์ฒ˜์Œ์— ๋ฐ›์€ 2์žฅ์˜ ํ•ฉ๊ณ„๊ฐ€ 16์ดํ•˜์ด๋ฉด ๋ฐ˜๋“œ์‹œ 1์žฅ์˜ ์นด๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ๋ฐ›์•„์•ผ ํ•˜๊ณ , 17์  ์ด์ƒ์ด๋ฉด ์ถ”๊ฐ€๋กœ ๋ฐ›์„ ์ˆ˜ ์—†๋‹ค.
- ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•˜๋ฉด ํ”Œ๋ ˆ์ด์–ด๋Š” ๋‘ ์žฅ์˜ ์นด๋“œ๋ฅผ ์ง€๊ธ‰ ๋ฐ›์œผ๋ฉฐ, ๋‘ ์žฅ์˜ ์นด๋“œ ์ˆซ์ž๋ฅผ ํ•ฉ์ณ 21์„ ์ดˆ๊ณผํ•˜์ง€ ์•Š์œผ๋ฉด์„œ 21์— ๊ฐ€๊น๊ฒŒ ๋งŒ๋“ค๋ฉด ์ด๊ธด๋‹ค. 21์„ ๋„˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์›ํ•œ๋‹ค๋ฉด ์–ผ๋งˆ๋“ ์ง€ ์นด๋“œ๋ฅผ ๊ณ„์† ๋ฝ‘์„ ์ˆ˜ ์žˆ๋‹ค. ๋‹จ, ์นด๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ๋ฝ‘์•„ 21์„ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ๋ฐฐํŒ… ๊ธˆ์•ก์„ ๋ชจ๋‘ ์žƒ๊ฒŒ ๋œ๋‹ค.
- ์ฒ˜์Œ ๋‘ ์žฅ์˜ ์นด๋“œ ํ•ฉ์ด 21์ผ ๊ฒฝ์šฐ ๋ธ”๋ž™์žญ์ด ๋˜๋ฉด ๋ฒ ํŒ… ๊ธˆ์•ก์˜ 1.5 ๋ฐฐ๋ฅผ ๋”œ๋Ÿฌ์—๊ฒŒ ๋ฐ›๋Š”๋‹ค. ๋”œ๋Ÿฌ์™€ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋ชจ๋‘ ๋™์‹œ์— ๋ธ”๋ž™์žญ์ธ ๊ฒฝ์šฐ ํ”Œ๋ ˆ์ด์–ด๋Š” ๋ฒ ํŒ…ํ•œ ๊ธˆ์•ก์„ ๋Œ๋ ค๋ฐ›๋Š”๋‹ค.
- ๋”œ๋Ÿฌ๋Š” ์ฒ˜์Œ์— ๋ฐ›์€ 2์žฅ์˜ ํ•ฉ๊ณ„๊ฐ€ 16์ดํ•˜์ด๋ฉด ๋ฐ˜๋“œ์‹œ 1์žฅ์˜ ์นด๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ๋ฐ›์•„์•ผ ํ•˜๊ณ , 17์  ์ด์ƒ์ด๋ฉด ์ถ”๊ฐ€๋กœ ๋ฐ›์„ ์ˆ˜ ์—†๋‹ค. ๋”œ๋Ÿฌ๊ฐ€ 21์„ ์ดˆ๊ณผํ•˜๋ฉด ๊ทธ ์‹œ์ ๊นŒ์ง€ ๋‚จ์•„ ์žˆ๋˜ ํ”Œ๋ ˆ์ด์–ด๋“ค์€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŒจ์— ์ƒ๊ด€ ์—†์ด ์Šน๋ฆฌํ•ด ๋ฒ ํŒ… ๊ธˆ์•ก์„ ๋ฐ›๋Š”๋‹ค.
- ๊ฒŒ์ž„์„ ์™„๋ฃŒํ•œ ํ›„ ๊ฐ ํ”Œ๋ ˆ์ด์–ด๋ณ„๋กœ ์ŠนํŒจ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

### ์‹คํ–‰ ๊ฒฐ๊ณผ
Expand All @@ -18,6 +20,12 @@
๊ฒŒ์ž„์— ์ฐธ์—ฌํ•  ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”.(์‰ผํ‘œ ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฆฌ)
pobi,jason

pobi์˜ ๋ฐฐํŒ… ๊ธˆ์•ก์€?
10000

jason์˜ ๋ฐฐํŒ… ๊ธˆ์•ก์€?
20000

๋”œ๋Ÿฌ์™€ pobi, jason์—๊ฒŒ 2์žฅ์„ ๋‚˜๋ˆ„์—ˆ์Šต๋‹ˆ๋‹ค.
๋”œ๋Ÿฌ์นด๋“œ: 3๋‹ค์ด์•„๋ชฌ๋“œ
pobi์นด๋“œ: 2ํ•˜ํŠธ, 8์ŠคํŽ˜์ด๋“œ
Expand All @@ -38,10 +46,10 @@ jason์นด๋“œ: 7ํด๋กœ๋ฒ„, K์ŠคํŽ˜์ด๋“œ
pobi์นด๋“œ: 2ํ•˜ํŠธ, 8์ŠคํŽ˜์ด๋“œ, Aํด๋กœ๋ฒ„ - ๊ฒฐ๊ณผ: 21
jason์นด๋“œ: 7ํด๋กœ๋ฒ„, K์ŠคํŽ˜์ด๋“œ - ๊ฒฐ๊ณผ: 17

## ์ตœ์ข… ์ŠนํŒจ
๋”œ๋Ÿฌ: 1์Šน 1ํŒจ
pobi: ์Šน
jason: ํŒจ
## ์ตœ์ข… ์ˆ˜์ต
๋”œ๋Ÿฌ: 10000
pobi: 10000
jason: -20000
```

## ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์š”๊ตฌ ์‚ฌํ•ญ
Expand All @@ -64,8 +72,6 @@ jason: ํŒจ
- ๋ชจ๋“  ์›์‹œ ๊ฐ’๊ณผ ๋ฌธ์ž์—ด์„ ํฌ์žฅํ•œ๋‹ค.
- ์ค„์—ฌ ์“ฐ์ง€ ์•Š๋Š”๋‹ค(์ถ•์•ฝ ๊ธˆ์ง€).
- ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์„ ์“ด๋‹ค.

### ์ถ”๊ฐ€๋œ ์š”๊ตฌ ์‚ฌํ•ญ
- ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ž‘๊ฒŒ ์œ ์ง€ํ•œ๋‹ค.
- 3๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.
- ๋”œ๋Ÿฌ์™€ ํ”Œ๋ ˆ์ด์–ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•œ๋‹ค.
Expand All @@ -77,18 +83,21 @@ jason: ํŒจ
- **1. ํ”Œ๋ ˆ์ด์–ด ์ด๋ฆ„ ์ž…๋ ฅ**
- **1-1.** ํ”Œ๋ ˆ์ด์–ด ์ด๋ฆ„ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
- **1-2.** ํ”Œ๋ ˆ์ด์–ด ์ธ์›์ˆ˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
- **2. ๋ชจ๋“  ์ฐธ๊ฐ€์ž์—๊ฒŒ ์นด๋“œ ๋ถ„๋ฐฐ ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ**
- **3.** ๋ชจ๋“  ์ฐธ๊ฐ€์ž์— ๋Œ€ํ•ด ์ด๋ฆ„๊ณผ up ์นด๋“œ ์ถœ๋ ฅ
- **4. ์ฐธ๊ฐ€์ž ๋ณ„๋กœ ์ถ”๊ฐ€ ์นด๋“œ๋ฅผ ๋ฐ›์„์ง€ ์„ ํƒํ•˜๋Š” ์ž…๋ ฅ**
- **4-1.** ๋Œ€๋‹ต ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
- **4-2.** ์ด๋ฆ„๊ณผ up ์นด๋“œ ์ถœ๋ ฅ
- **5. ๋”œ๋Ÿฌ๋Š” ์นด๋“œ ํ•ฉ๊ณ„์— ๋”ฐ๋ผ ๋‹ค์Œ ํ–‰๋™์„ ์ˆ˜ํ–‰**
- **5-1.** 17 ๋ฏธ๋งŒ์ผ ๊ฒฝ์šฐ, ์นด๋“œ๋ฅผ ๋” ๋ฐ›๋Š” ํ–‰๋™์„ ๋ฐ˜๋ณต
- **5-2.** 17 ์ด์ƒ์ผ ๊ฒฝ์šฐ, ์นด๋“œ๋ฅผ ๋ฐ›์ง€ ์•Š์Œ
- **6. ๋ชจ๋“  ์ฐธ๊ฐ€์ž์— ๋Œ€ํ•ด ๋ชจ๋“  ์นด๋“œ์™€ ์ ์ˆ˜ ๊ฒฐ๊ณผ ์ถœ๋ ฅ**
- **7. ์ตœ์ข… ์ŠนํŒจ ์ถœ๋ ฅ**
- **2. ๋ชจ๋“  ์ฐธ๊ฐ€์ž์—๊ฒŒ ๋ฐฐํŒ… ๊ธˆ์•ก ์ž…๋ ฅ ๋ฐ›๊ธฐ**
- **2-1.** ๋ฐฐํŒ… ๊ธˆ์•ก ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
- **3. ๋ชจ๋“  ์ฐธ๊ฐ€์ž์—๊ฒŒ ์นด๋“œ ๋ถ„๋ฐฐ ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ**
- **4.** ๋ชจ๋“  ์ฐธ๊ฐ€์ž์— ๋Œ€ํ•ด ์ด๋ฆ„๊ณผ up ์นด๋“œ ์ถœ๋ ฅ
- **5. ์ฐธ๊ฐ€์ž ๋ณ„๋กœ ์ถ”๊ฐ€ ์นด๋“œ๋ฅผ ๋ฐ›์„์ง€ ์„ ํƒํ•˜๋Š” ์ž…๋ ฅ**
- **5-1.** ๋Œ€๋‹ต ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
- **5-2.** ์ด๋ฆ„๊ณผ up ์นด๋“œ ์ถœ๋ ฅ
- **6. ๋”œ๋Ÿฌ๋Š” ์นด๋“œ ํ•ฉ๊ณ„์— ๋”ฐ๋ผ ๋‹ค์Œ ํ–‰๋™์„ ์ˆ˜ํ–‰**
- **6-1.** 17 ๋ฏธ๋งŒ์ผ ๊ฒฝ์šฐ, ์นด๋“œ๋ฅผ ๋” ๋ฐ›๋Š” ํ–‰๋™์„ ๋ฐ˜๋ณต
- **6-2.** 17 ์ด์ƒ์ผ ๊ฒฝ์šฐ, ์นด๋“œ๋ฅผ ๋ฐ›์ง€ ์•Š์Œ
- **7. ๋ชจ๋“  ์ฐธ๊ฐ€์ž์— ๋Œ€ํ•ด ๋ชจ๋“  ์นด๋“œ์™€ ์ ์ˆ˜ ๊ฒฐ๊ณผ ์ถœ๋ ฅ**
- **8. ์ตœ์ข… ์ˆ˜์ต ์ถœ๋ ฅ**

### ์ •์ƒ ์ž…๋ ฅ
- ํ”Œ๋ ˆ์ด์–ด ์ด๋ฆ„์€ ์‰ผํ‘œ(`,`)๋กœ ๊ตฌ๋ถ„ํ•ด ์ž…๋ ฅํ•œ๋‹ค.
- ํ”Œ๋ ˆ์ด์–ด ์ด๋ฆ„์€ 4~10์ž๋กœ ์ž…๋ ฅํ•œ๋‹ค.
- ๋ฐฐํŒ… ๊ธˆ์•ก์€ ์–‘์˜ ์ •์ˆ˜๋กœ ์ž…๋ ฅํ•œ๋‹ค.
- ์ถ”๊ฐ€ ์นด๋“œ ์„ ํƒ์€ y ํ˜น์€ n์œผ๋กœ ์ž…๋ ฅํ•œ๋‹ค.
2 changes: 1 addition & 1 deletion src/main/java/blackjack/Application.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package blackjack;

import blackjack.controller.BlackjackController;
import blackjack.domain.RandomShuffleStrategy;
import blackjack.domain.strategy.RandomShuffleStrategy;
import blackjack.strategy.ShuffleStrategy;

public class Application {
Expand Down
56 changes: 41 additions & 15 deletions src/main/java/blackjack/controller/BlackjackController.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,26 @@
package blackjack.controller;

import blackjack.domain.Answer;
import blackjack.domain.Dealer;
import blackjack.domain.Hand;
import blackjack.domain.Participants;
import blackjack.domain.Player;
import blackjack.domain.Players;
import blackjack.domain.Status;
import blackjack.domain.Trump;
import blackjack.dto.FinalResultDto;
import blackjack.domain.judgement.Answer;
import blackjack.domain.judgement.BettingMoney;
import blackjack.domain.judgement.BettingMoneyInfo;
import blackjack.domain.participant.Dealer;
import blackjack.domain.card.Hand;
import blackjack.domain.participant.Name;
import blackjack.domain.participant.Participants;
import blackjack.domain.participant.Player;
import blackjack.domain.participant.Players;
import blackjack.domain.judgement.Status;
import blackjack.domain.card.Trump;
import blackjack.dto.FinalProfitDto;
import blackjack.strategy.ShuffleStrategy;
import blackjack.utils.Parser;
import blackjack.utils.RetryExecutor;
import blackjack.view.InputView;
import blackjack.view.OutputView;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class BlackjackController {

Expand All @@ -30,13 +35,15 @@ public void run() {
Players players = RetryExecutor.retry(this::readPlayers);
Participants participants = new Participants(players, dealer);

BettingMoneyInfo bettingMoneyInfo = readBettingMoney(players);

dealer.pitch(players.all());
OutputView.printStartMessage(players.all(), dealer);

players.all().forEach(this::handleBlackjack);
players.all().forEach(player -> handlePlayerAction(player, dealer));
handleDealerAction(dealer);

printResult(participants, players, dealer);
printResult(participants, bettingMoneyInfo);
}

private Dealer readyGame() {
Expand All @@ -45,10 +52,25 @@ private Dealer readyGame() {
return new Dealer(emptyHand, Status.HIT, trump);
}

private void printResult(Participants participants, Players players, Dealer dealer) {
private BettingMoneyInfo readBettingMoney(Players players) {
Map<Name, BettingMoney> bettingMoneyByPlayer = new HashMap<>();
players.all().forEach(player -> {
BettingMoney bettingMoney = RetryExecutor.retry(this::readBettingMoneyByPlayer, player);
bettingMoneyByPlayer.put(player.getName(), bettingMoney);
});

return new BettingMoneyInfo(bettingMoneyByPlayer);
}

private BettingMoney readBettingMoneyByPlayer(Player player) {
String rawBettingMoney = InputView.readBettingMoney(player.getName().toString());
return new BettingMoney(rawBettingMoney);
}

private void printResult(Participants participants, BettingMoneyInfo bettingMoneyInfo) {
OutputView.printFinalStatus(participants);
FinalResultDto finalResultDto = FinalResultDto.of(players.all(), dealer);
OutputView.printFinalResult(finalResultDto);
FinalProfitDto finalProfitDto = FinalProfitDto.of(participants, bettingMoneyInfo);
OutputView.printProfit(finalProfitDto);
}

private void handleDealerAction(Dealer dealer) {
Expand All @@ -61,10 +83,14 @@ private void handleDealerAction(Dealer dealer) {
dealer.handleBurst();
}

private void handleBlackjack(Player player) {
player.handleBlackjack();
}

private void handlePlayerAction(Player player, Dealer dealer) {
while (player.isHit()) {
Answer answer =
RetryExecutor.retry(this::readAnswer, player.getNickname());
RetryExecutor.retry(this::readAnswer, player.getName().toString());
handleAnswer(player, dealer, answer);
OutputView.printCardStatus(player);
}
Expand Down
42 changes: 0 additions & 42 deletions src/main/java/blackjack/domain/Player.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package blackjack.domain;
package blackjack.domain.card;

public class Card {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package blackjack.domain;
package blackjack.domain.card;

import java.util.List;
import java.util.Objects;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package blackjack.domain;
package blackjack.domain.card;

import java.util.ArrayList;
import java.util.List;

public class Hand {
Expand Down Expand Up @@ -40,6 +39,10 @@ public List<String> getCardNames(int startInclusive) {
.toList();
}

public boolean isBlackjack() {
return cards.size() == 2 && calculateScore() == BURST_THRESHOLD;
}

private int handleAce(int totalScore) {
long aceCount = countAce();
int updatedScore = totalScore;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package blackjack.domain;
package blackjack.domain.card;

import java.util.List;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package blackjack.domain;
package blackjack.domain.card;

import blackjack.strategy.ShuffleStrategy;
import java.util.ArrayList;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package blackjack.domain;
package blackjack.domain.judgement;

import java.util.List;
import java.util.Objects;
Expand Down
35 changes: 35 additions & 0 deletions src/main/java/blackjack/domain/judgement/BettingMoney.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package blackjack.domain.judgement;

public class BettingMoney {

private final Integer money;

public BettingMoney(String rawBettingMoney) {
int money = parseInt(rawBettingMoney);
validatePositive(money);
this.money = money;
}

@Override
public String toString() {
return String.valueOf(money);
}

private int parseInt(String input) {
try {
return Integer.parseInt(input);
} catch (NumberFormatException e) {
throw new IllegalArgumentException("๋ฐฐํŒ… ๊ธˆ์•ก์€ ์ •์ˆ˜๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.");
}
}

private void validatePositive(Integer money) {
if (money < 0) {
throw new IllegalArgumentException("๋ฐฐํŒ… ๊ธˆ์•ก์€ ์Œ์ˆ˜์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.");
}
}

public double multiply(double dividendRate) {
return money * dividendRate;
}
}
19 changes: 19 additions & 0 deletions src/main/java/blackjack/domain/judgement/BettingMoneyInfo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package blackjack.domain.judgement;

import blackjack.domain.participant.Name;
import java.util.Map;

public class BettingMoneyInfo {

private final Map<Name, BettingMoney> bettingMoneyInfo;

public BettingMoneyInfo(Map<Name, BettingMoney> bettingMoneyInfo) {
this.bettingMoneyInfo = bettingMoneyInfo;
}

public BettingMoney findMoneyByName(Name nickname) {
return bettingMoneyInfo.get(nickname);
}


}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package blackjack.domain;
package blackjack.domain.judgement;

public record DealerResult(
long dealerWinCount,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
package blackjack.domain;
package blackjack.domain.judgement;

import java.util.List;
import java.util.Objects;

public enum GameResult {

WIN("์Šน"),
DRAW("๋ฌด"),
LOSE("ํŒจ");
BLACKJACK("๋ธ”๋ž™์žญ", 1.5),
WIN("์Šน", 1.0),
DRAW("๋ฌด", 0),
LOSE("ํŒจ", -1.0);

private final String name;
private final double dividendRate;

GameResult(String name) {
GameResult(String name, double dividendRate) {
this.name = name;
this.dividendRate = dividendRate;
}

public String getName() {
Expand All @@ -26,6 +29,11 @@ private static List<GameResult> all() {
public static GameResult pick(String name) {
return all().stream()
.filter(gameResult -> Objects.equals(name, gameResult.name))
.findFirst().orElse(DRAW);
.findFirst()
.orElse(DRAW);
}

public double calculateProfit(BettingMoney bettingMoney) {
return bettingMoney.multiply(dividendRate);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package blackjack.domain;
package blackjack.domain.judgement;

public enum Status {

Expand Down
Loading