Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
6a1b873
docs: README ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ ์—…๋ฐ์ดํŠธ
alstj2384 Mar 12, 2026
60f7900
feat(BetMoney): BetMoney ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฐ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
alstj2384 Mar 12, 2026
f7bada6
refactor(Participant): ๊ฒฐ๊ณผ(๋ธ”๋ž™์žญ, ๋ฒ„์ŠคํŠธ) ํ™•์ธ ํ…Œ์ŠคํŠธ ๋ฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
alstj2384 Mar 12, 2026
5136894
test(Player): ๋ฌด์Šน๋ถ€ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
alstj2384 Mar 12, 2026
ad3854c
refactor(Participant): ๊ฒฐ๊ณผ ์ง‘๊ณ„ ๋กœ์ง ๋ฐ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
alstj2384 Mar 12, 2026
d610ad2
refactor: ๊ณ„์‚ฐ ๊ฒฐ๊ณผ ์ถœ๋ ฅ ๋กœ์ง ์ž‘์„ฑ
alstj2384 Mar 12, 2026
1814846
feat: ๋ฐฐํŒ… ๊ธˆ์•ก์„ ์ž…๋ ฅ๋ฐ›๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€
alstj2384 Mar 12, 2026
ad3283b
fix: ์ค‘๋ณต ๋‹‰๋„ค์ž„ ๊ฒ€์‚ฌ ์‹œ ๊ณต๋ฐฑ์„ ๋‚˜์ค‘์— ์ œ๊ฑฐํ•˜์—ฌ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ ์ˆ˜์ •
alstj2384 Mar 12, 2026
246a3da
refactor: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” Result ํด๋ž˜์Šค์™€ ํ…Œ์ŠคํŠธ ์ œ๊ฑฐ
alstj2384 Mar 12, 2026
b5cbf2f
refactor(Participant): getResult ๋‚ด๋ถ€ ๋ฉ”์„œ๋“œ ์ถ”์ถœ
alstj2384 Mar 12, 2026
cca26a5
refactor: ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ๋ณ€๊ฒฝ
alstj2384 Mar 12, 2026
65d8cc8
fix: ๊ฒฐ๊ณผ ์ถœ๋ ฅ ์‹œ ํ•จ๊ป˜ ์†Œ์ˆ˜์ ์ด ํ‘œ๊ธฐ๋˜๋Š” ๋ฌธ์ œ ์ˆ˜์ •
alstj2384 Mar 12, 2026
7d128f9
refactor(Score): Score๋ฅผ record๋กœ ๋ณ€๊ฒฝ ๋ฐ ๋ฏธ์‚ฌ์šฉ ๋ฉ”์„œ๋“œ ์ œ๊ฑฐ
alstj2384 Mar 14, 2026
3b96e03
refactor(Score): ์ž์ฃผ ์“ฐ์ด๋Š” Score ๊ฐ’์„ ์ƒ์ˆ˜๋กœ ์„ ์–ธํ•˜์—ฌ ์žฌ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 14, 2026
e755fd2
refactor(Player): ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ƒ์„ฑ์ž ์ œ๊ฑฐ
alstj2384 Mar 14, 2026
0c5576b
refactor(Dealer): ๋”œ๋Ÿฌ์˜ ํžˆํŠธ์Šคํƒ ๋“œ ํŒ๋ณ„ ๋ฉ”์„œ๋“œ ์ด๋ฆ„์„ ์˜๋„๊ฐ€ ๋“œ๋Ÿฌ๋‚˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 14, 2026
08742df
refactor(Rank): ๋ฉ”์„œ๋“œ ๋ฐ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋„ค์ด๋ฐ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ˆ˜์ •
alstj2384 Mar 14, 2026
ad2e4ac
refactor(BlackjackController): Controller์—์„œ BlackjackGame์„ ๊ฐ–์ง€ ์•Š๋„๋ก ์ˆ˜์ •
alstj2384 Mar 14, 2026
fe07531
refactor: Player๋งŒ ๊ฐ–๋Š” ์†์„ฑ์ด Participant์— ์กด์žฌํ•˜์—ฌ Dealer๊ฐ€ ๋ถˆํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๊ฐ–๋˜ ๊ตฌ์กฐ ์ˆ˜์ •
alstj2384 Mar 14, 2026
7d82e85
refactor(Name): ์ด๋ฆ„ ๊ธธ์ด ์˜ˆ์™ธ ๋ฉ”์‹œ์ง€์— ์ƒ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‘œํ˜„ํ•˜๋„๋ก ์ˆ˜์ •
alstj2384 Mar 14, 2026
276bf95
refactor(Player): ์ƒ์„ฑ์ž๋ฅผ ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ ์˜๋„๋ฅผ ๋ช…ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 14, 2026
794b976
refactor(Dealer): ์ƒ์„ฑ์ž๋ฅผ ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 14, 2026
5658561
refactor(Name): ์ƒ์„ฑ์ž๋ฅผ ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 14, 2026
209f013
refactor(Hand): ์ƒ์„ฑ์ž๋ฅผ ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 14, 2026
7aeb199
refactor(Deck): ์ƒ์„ฑ์ž๋ฅผ ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 14, 2026
7acbcba
refactor(Deck): Deck ๊ตฌํ˜„์ฒด๋ฅผ ArrayDeque๋กœ ๋ณ€๊ฒฝ
alstj2384 Mar 14, 2026
7e6d2e0
refactor: ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์นด๋“œ๋ฅผ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•˜์—ฌ ์žฌํ™œ์šฉํ•˜๋„๋ก ์ˆ˜์ •
alstj2384 Mar 14, 2026
1996e57
refactor(BetMoney): ์ƒ์„ฑ ๋ฉ”์„œ๋“œ ์ด๋ฆ„์„ of -> valueOf๋กœ ๋ณ€๊ฒฝ
alstj2384 Mar 14, 2026
273d637
refactor: ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์˜ˆ์™ธ ๋ฉ”์„ธ์ง€๋ฅผ CommonExceptionMessage๋กœ ์œ„์น˜ ๋ณ€๊ฒฝ
alstj2384 Mar 14, 2026
af7298e
refactor: Players์™€ Player ๋“ค์—ฌ์“ฐ๊ธฐ ์ค€์ˆ˜๋ฅผ ์œ„ํ•œ ๋ฆฌํŒฉํ† ๋ง ์ˆ˜ํ–‰
alstj2384 Mar 14, 2026
10e5834
refactor(BlackjackGame): ๋”œ๋Ÿฌ ํžˆํŠธ์Šคํƒ ๋“œ ๋ฉ”์„œ๋“œ์˜ ๋“ค์—ฌ์“ฐ๊ธฐ 1์„ ์ค€์ˆ˜ํ•˜๊ธฐ ์œ„ํ•œ ๋ฆฌํŒฉํ† ๋ง ์ˆ˜ํ–‰
alstj2384 Mar 14, 2026
d41e790
refactor: ํžˆํŠธ์Šคํƒ ๋“œ ๋ฐ˜๋ณต ๋กœ์ง์„ Players๊ฐ€ ์•„๋‹Œ BlackjackGame์—์„œ ๊ตฌํ˜„ํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 14, 2026
df2c38f
refactor: ์ƒ์ˆ˜ ์ด๋ฆ„์„ ์ผ๊ด€์„ฑ์žˆ๊ฒŒ ๋ณ€๊ฒฝ
alstj2384 Mar 14, 2026
0e69497
refactor: ๋žŒ๋‹ค๋ฅผ ๋˜๋„๋ก ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 14, 2026
4c67ac3
refactor: Players ์ƒ์„ฑ ์‹œ ์ด๋ฆ„๊ณผ ๋ฐฐํŒ… ๊ธˆ์•ก์„ ํ•œ ๋ฒˆ์— ๋ฐ›์•„ ๋“ฑ๋กํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๋ณ€๊ฒฝ
alstj2384 Mar 14, 2026
b892d78
refactor(BetMoney): ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ƒ์„ฑ์ž ์ •๋ฆฌ
alstj2384 Mar 14, 2026
8ad4903
fix: ๋ฐฐํŒ…๊ธˆ์•ก ์ž…๋ ฅ ์‹œ ์ž˜๋ชป๋œ ์กฐ๊ฑด๋ฌธ ์ˆ˜์ •
alstj2384 Mar 14, 2026
77cbc63
refactor(BlackjackGame): ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋กœ ์ƒ์„ฑํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 14, 2026
f189662
test(Card): ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ถ”๊ฐ€
alstj2384 Mar 14, 2026
7e1f400
test(Hand): ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ถ”๊ฐ€
alstj2384 Mar 14, 2026
490eae1
test(Dealer): ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ถ”๊ฐ€
alstj2384 Mar 14, 2026
ec56a67
test(Name): ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ถ”๊ฐ€
alstj2384 Mar 14, 2026
23e6e9c
test(Player): ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ถ”๊ฐ€
alstj2384 Mar 14, 2026
0133f3d
refactor: ์ตœ์ข… ๊ฒฐ๊ณผ ์ถœ๋ ฅ ๋ฉ”์„œ๋“œ ๋„ค์ด๋ฐ ๋ณ€๊ฒฝ ๋ฐ ๋ฉ”์„œ๋“œ ๋ถ„๋ฆฌ
alstj2384 Mar 14, 2026
7a91795
fix: Player ๊นŠ์€ ๋ณต์‚ฌ ํ…Œ์ŠคํŠธ ์‹คํŒจ ๋ณต๊ตฌ
alstj2384 Mar 14, 2026
a793e7a
test(Score): ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ถ”๊ฐ€
alstj2384 Mar 14, 2026
2bd716a
fix: BigDecimal ์ถœ๋ ฅ ์‹œ ์†Œ์ˆ˜์  ์ฒ˜๋ฆฌ ์ •์ฑ… ์ ์šฉ
alstj2384 Mar 14, 2026
2606419
refactor(Player): judge ๋ฉ”์„œ๋“œ ์ถ”์ถœ
alstj2384 Mar 14, 2026
b8408f3
fix(Rank): ์—ฌ๋Ÿฌ ์žฅ์˜ ์—์ด์Šค ๊ณ„์‚ฐ์ด ์ž˜๋ชป๋˜๋Š” ๋ฒ„๊ทธ ์ˆ˜์ • ๋ฐ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
alstj2384 Mar 16, 2026
38ed6e9
fix: ํ”Œ๋ ˆ์ด์–ด ๋ฒ„์ŠคํŠธ ์‹œ ์นด๋“œ ์ถœ๋ ฅ์ด 2๋ฒˆ ๋˜๋Š” ๋ฒ„๊ทธ ์ˆ˜์ •
alstj2384 Mar 16, 2026
e4aca33
refactor: ์—์ด์Šค ํ•ฉ๊ณ„ ๊ณ„์‚ฐ ์ฑ…์ž„์„ Rank์—์„œ Score๋กœ ๋ณ€๊ฒฝ
alstj2384 Mar 16, 2026
0b20c9a
refactor(Hand): copyOf์‹œ ๊ฐ€๋ณ€ ์ปฌ๋ ‰์…˜์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ˆ˜์ •
alstj2384 Mar 16, 2026
e2bd26a
refactor: BlackjackGame ์ œ๊ฑฐ ๋ฐ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํ๋ฆ„์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 16, 2026
e828796
refactor(State): ์ŠนํŒจ ํŒ์ •์„ ์ƒํƒœ๊ฐ€ ํŒ๋‹จํ•˜๋„๋ก ์ˆ˜์ •
alstj2384 Mar 16, 2026
8b73ed1
refactor: ์ƒํƒœ ํŒจํ„ด์„ ์ ์šฉํ•˜์—ฌ ๋ฆฌํŒฉํ† ๋ง
alstj2384 Mar 16, 2026
71b8745
refactor: ๊ฐ ์ƒํƒœ์—์„œ ํ•  ์ˆ˜ ์—†๋Š” ํ–‰๋™ ์ˆ˜ํ–‰ ์‹œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋„๋ก ์ˆ˜์ •
alstj2384 Mar 18, 2026
c305679
refactor: ๋ธ”๋ž™์žญ, ๋ฒ„์ŠคํŠธ, ์Šคํ…Œ์ด ์ƒํƒœ์˜ ๊ณตํ†ต๋œ ์˜ˆ์™ธ ๋ฐ ๋กœ์ง์„ Finished ์ถ”์ƒ ํด๋ž˜์Šค๋กœ ๋ฌถ์–ด ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 18, 2026
2c7aea4
refactor: ์ƒํƒœ ์ƒ์† ๊ณ„์ธต ์ถ”๊ฐ€
alstj2384 Mar 18, 2026
4ad5596
refactor: Score ํด๋ž˜์Šค์˜ sub ๋ฉ”์„œ๋“œ ๋„ค์ด๋ฐ์„ subtract๋กœ ๋ณ€๊ฒฝ
alstj2384 Mar 20, 2026
baf4b0a
refactor: Result ๋„๋ฉ”์ธ์˜ odd ๋ณ€์ˆ˜ ์ด๋ฆ„์„ odds๋กœ ๋ณ€๊ฒฝ
alstj2384 Mar 20, 2026
e214037
refactor: Hit ์ƒํƒœ ๋ณ€ํ™˜ ์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜ hand๋ฅผ ๋ณต์‚ฌํ•œ ํ›„ ํ• ๋‹นํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 20, 2026
a0b6b25
refactor: jedge์—์„œ ์ ์ ˆํ•œ ์˜ˆ์™ธํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 20, 2026
21e5c1a
refactor: printDealerHitStand์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„์„ value -> hit๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณ€๊ฒฝ
alstj2384 Mar 20, 2026
8b5fc46
refactor: dto๋ฅผ ๋„์ž…ํ•˜์—ฌ view์—์„œ ๋„๋ฉ”์ธ์„ ์˜์กดํ•˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 22, 2026
b170534
refactor: BlackjackGame์—์„œ ์‹คํ–‰ ํ๋ฆ„์„ ๊ด€๋ฆฌํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 22, 2026
248fd1b
refactor: BetMoney์˜ sub๋ฅผ subtract๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณ€๊ฒฝ
alstj2384 Mar 22, 2026
b62fb74
refactor: BetMoney์˜ ๋ฉ”์„œ๋“œ ์ด๋ฆ„์ด ์ œ๋Œ€๋กœ ๋ฐ”๋€Œ์ง€ ์•Š์•˜๋˜ ๋ถ€๋ถ„ ์ˆ˜์ •
alstj2384 Mar 22, 2026
523e632
refactor: ์ค‘๋ณต๋œ ์˜๋ฏธ์˜ ์ƒ์ˆ˜๋ฅผ ํ•˜๋‚˜๋กœ ๊ด€๋ฆฌํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 22, 2026
4aa02f0
refactor: Inputview์—์„œ ๋„๋ฉ”์ธ์„ ์˜์กดํ•˜์ง€ ์•Š๋„๋ก ์ˆ˜์ •
alstj2384 Mar 22, 2026
feeeffc
refactor: ์ด๋ฆ„๊ณผ ๋ฐฐํŒ… ๊ธˆ์•ก ์ž…๋ ฅ ์ข…ํ•ฉ์„ view์—์„œ ํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 22, 2026
a6d43cc
refactor: hitStand ๋‹จ๊ณ„๋ฅผ BlackjackGame ๋‚ด๋ถ€์—์„œ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 23, 2026
8caff45
refactor: ๋””๋ฏธํ„ฐ์˜ ๋ฒ•์น™์„ ์ค€์ˆ˜ํ•˜๋„๋ก ๋ณ€๊ฒฝ
alstj2384 Mar 23, 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
77 changes: 51 additions & 26 deletions README.md
Comment thread
Gomding marked this conversation as resolved.
Comment thread
Gomding marked this conversation as resolved.
Comment thread
Gomding marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -5,57 +5,82 @@
# ๊ธฐ๋Šฅ ๋ช…์„ธ์„œ

## ์ž…๋ ฅ

- [x] ์ฐธ์—ฌ ์ธ์› ์ด๋ฆ„์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
- [x] ๊ฒŒ์ž„์— ์ฐธ์—ฌํ•  ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”.(์‰ผํ‘œ ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฆฌ)
- [x] ํ”Œ๋ ˆ์ด์–ด๋ณ„๋กœ ํžˆํŠธ/์Šคํƒ ๋“œ ์ž…๋ ฅ๋ฐ›๊ธฐ
- [x] ํ”Œ๋ ˆ์ด์–ด๋ณ„๋กœ ํžˆํŠธ/์Šคํƒ ๋“œ๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
- [x] pobi๋Š” ํ•œ์žฅ์˜ ์นด๋“œ๋ฅผ ๋” ๋ฐ›๊ฒ ์Šต๋‹ˆ๊นŒ?(์˜ˆ๋Š” y, ์•„๋‹ˆ์˜ค๋Š” n)
- [x] ํ”Œ๋ ˆ์ด์–ด๋ณ„๋กœ ๋ฐฐํŒ… ๊ธˆ์•ก์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
- [x] ๋ฐฐํŒ… ๊ธˆ์•ก์€ ์Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ์–ด์•ผ ํ•œ๋‹ค.

## ์ถœ๋ ฅ

- [x] ์นด๋“œ ๋ถ„๋ฐฐ ๊ธฐ๋ก์„ ์ถœ๋ ฅํ•œ๋‹ค.
```java
๋”œ๋Ÿฌ์™€ pobi, jason์—๊ฒŒ 2์žฅ์„ ๋‚˜๋ˆ„์—ˆ์Šต๋‹ˆ๋‹ค.
๋”œ๋Ÿฌ์นด๋“œ: 3๋‹ค์ด์•„๋ชฌ๋“œ
pobi์นด๋“œ: 2ํ•˜ํŠธ, 8์ŠคํŽ˜์ด๋“œ
jason์นด๋“œ: 7ํด๋กœ๋ฒ„, K์ŠคํŽ˜์ด๋“œ
```

```java
๋”œ๋Ÿฌ์™€ pobi,jason์—๊ฒŒ 2์žฅ์„ ๋‚˜๋ˆ„์—ˆ์Šต๋‹ˆ๋‹ค.
๋”œ๋Ÿฌ์นด๋“œ:3๋‹ค์ด์•„๋ชฌ๋“œ
pobi์นด๋“œ:2ํ•˜ํŠธ,8์ŠคํŽ˜์ด๋“œ
jason์นด๋“œ:7ํด๋กœ๋ฒ„,K์ŠคํŽ˜์ด๋“œ
```

- [x] ํ”Œ๋ ˆ์ด์–ด ๋ณด์œ  ์นด๋“œ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
```java
pobi์นด๋“œ: 2ํ•˜ํŠธ, 8์ŠคํŽ˜์ด๋“œ, Aํด๋กœ๋ฒ„
```

```java
pobi์นด๋“œ:2ํ•˜ํŠธ,8์ŠคํŽ˜์ด๋“œ,Aํด๋กœ๋ฒ„
```

- [x] ๋”œ๋Ÿฌ ์นด๋“œ ์ถ”๊ฐ€ ์—ฌ๋ถ€ ์ถœ๋ ฅ
```markdown
๋”œ๋Ÿฌ๋Š” 16์ดํ•˜๋ผ ํ•œ์žฅ์˜ ์นด๋“œ๋ฅผ ๋” ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

๋”œ๋Ÿฌ๋Š” 17์ด์ƒ์ด๋ผ ์นด๋“œ๋ฅผ ๋ฐ›์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
```
- [x] ์ฐธ๊ฐ€์ž์˜ ๊ฒฐ๊ณผ๋ฅผ ์ตœ์ข… ๋ณด์œ  ์นด๋“œ์™€ ํ•ฉ๊ณ„๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
```markdown
๋”œ๋Ÿฌ์นด๋“œ: 3๋‹ค์ด์•„๋ชฌ๋“œ, 9ํด๋กœ๋ฒ„, 8๋‹ค์ด์•„๋ชฌ๋“œ - ๊ฒฐ๊ณผ: 20
pobi์นด๋“œ: 2ํ•˜ํŠธ, 8์ŠคํŽ˜์ด๋“œ, Aํด๋กœ๋ฒ„ - ๊ฒฐ๊ณผ: 21
jason์นด๋“œ: 7ํด๋กœ๋ฒ„, K์ŠคํŽ˜์ด๋“œ - ๊ฒฐ๊ณผ: 17
```
```markdown
๋”œ๋Ÿฌ์นด๋“œ: 3๋‹ค์ด์•„๋ชฌ๋“œ, 9ํด๋กœ๋ฒ„, 8๋‹ค์ด์•„๋ชฌ๋“œ - ๊ฒฐ๊ณผ: 20
pobi์นด๋“œ: 2ํ•˜ํŠธ, 8์ŠคํŽ˜์ด๋“œ, Aํด๋กœ๋ฒ„ - ๊ฒฐ๊ณผ: 21
jason์นด๋“œ: 7ํด๋กœ๋ฒ„, K์ŠคํŽ˜์ด๋“œ - ๊ฒฐ๊ณผ: 17
```
- [x] ์ตœ์ข… ์ŠนํŒจ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
```markdown
๋”œ๋Ÿฌ: 1์Šน 1ํŒจ
pobi: ์Šน
jason: ํŒจ
```
```markdown
๋”œ๋Ÿฌ: 1์Šน 1ํŒจ
pobi: ์Šน
jason: ํŒจ
```
- [x] ์ตœ์ข… ์ˆ˜์ต์„ ์ถœ๋ ฅํ•œ๋‹ค.

``` markdown
๋”œ๋Ÿฌ: 10000
pobi: 10000
jason: -20000
```

## ํ•ต์‹ฌ ๊ธฐ๋Šฅ

- [x] ์นด๋“œ ๋ฑ ์ƒ์„ฑ ๋ฐ ์…”ํ”Œ
- [x] ์นด๋“œ ์ ์ˆ˜ ๊ณ„์‚ฐ
- [x] Ace 1/11 ์ฒ˜๋ฆฌ
- [x] ๋ฒ„์ŠคํŠธ ํŒ์ •
- [x] ํžˆํŠธ/์Šคํƒ ๋“œ ์ฒ˜๋ฆฌ
- [x] ์ŠนํŒจ ํŒ์ •
- [x] ํ”Œ๋ ˆ์ด์–ด์™€ ๋”œ๋Ÿฌ์˜ ํ•ฉ๊ณ„๊ฐ€ ๊ฐ™๊ฑฐ๋‚˜, ๋ชจ๋“œ ๋ฒ„์ŠคํŠธ์ด๋ฉด๋ฉด ๋ฌด์Šน๋ถ€ ์ฒ˜๋ฆฌํ•œ๋‹ค.
- [x] ํ”Œ๋ ˆ์ด์–ด์˜ ํ•ฉ๊ณ„๊ฐ€ 21 ์ดํ•˜์ด๋ฉด์„œ ํ”Œ๋ ˆ์ด์–ด์˜ ํ•ฉ๊ณ„๊ฐ€ ๋”œ๋Ÿฌ์˜ ํ•ฉ๊ณ„๋ณด๋‹ค ํฌ๋ฉด ํ”Œ๋ ˆ์ด์–ด์˜ ์Šน๋ฆฌ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
- [x] ํ”Œ๋ ˆ์ด์–ด์˜ ํ•ฉ๊ณ„๊ฐ€ ๋”œ๋Ÿฌ์˜ ํ•ฉ๊ณ„๋ณด๋‹ค ์ž‘๊ณ  ๋”œ๋Ÿฌ์˜ ํ•ฉ๊ณ„๊ฐ€ 21 ์ดํ•˜์ด๋ฉด ํ”Œ๋ ˆ์ด์–ด์˜ ํŒจ๋ฐฐ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
- [x] ํ”Œ๋ ˆ์ด์–ด์˜ ํ•ฉ๊ณ„๊ฐ€ 21 ์ดˆ๊ณผ์ด๋ฉด์„œ ๋”œ๋Ÿฌ์˜ ํ•ฉ๊ณ„๊ฐ€ 21 ์ดํ•˜์ด๋ฉด ํ”Œ๋ ˆ์ด์–ด์˜ ํŒจ๋ฐฐ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
- [x] ๋ธ”๋ž™์žญ์ด๋ฉด ํžˆํŠธ/์Šคํƒ ๋“œ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋ธ”๋ž™์žญ์œผ๋กœ ์Šน๋ฆฌํ•œ๋‹ค.
- [x] ํ”Œ๋ ˆ์ด์–ด ๋ฒ„์ŠคํŠธ ์‹œ ๋” ์ด์ƒ ์นด๋“œ๋ฅผ ๋ฝ‘์„ ์ˆ˜ ์—†๋‹ค.
- [x] ์ŠนํŒจ ํŒ์ •
- [x] ํ”Œ๋ ˆ์ด์–ด์™€ ๋”œ๋Ÿฌ ๋ชจ๋‘ ๋ธ”๋ž™์žญ์ด๋ฉด ๋ฌด์Šน๋ถ€ ์ฒ˜๋ฆฌํ•œ๋‹ค.
- [x] ๋”œ๋Ÿฌ๊ฐ€ 21์„ ์ดˆ๊ณผํ•˜๋ฉด ๋ฒ„์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ํ”Œ๋ ˆ์ด์–ด๋Š” ์Šน๋ฆฌ ์ฒ˜๋ฆฌํ•œ๋‹ค.
- [x] ๋ฐฐํŒ… ๊ธฐ๋Šฅ
- [x] ์ผ๋ฐ˜ ์Šน๋ฆฌ ์‹œ ๋ฐฐํŒ… ๊ธˆ์•ก์˜ 1.0๋ฐฐ๋ฅผ ๋ฐ›๋Š”๋‹ค.
- [x] ๋ธ”๋ž™์žญ ์Šน๋ฆฌ ์‹œ ๋ฐฐํŒ… ๊ธˆ์•ก์˜ 1.5๋ฐฐ๋ฅผ ๋ฐ›๋Š”๋‹ค.
- [x] ์ผ๋ฐ˜ ํŒจ๋ฐฐ ์‹œ ๋ฐฐํŒ… ๊ธˆ์•ก์„ ๋ชจ๋‘ ์žƒ๋Š”๋‹ค.
- [x] ๋ฒ„์ŠคํŠธ ์‹œ ๊ฒฝ์šฐ ๋ฐฐํŒ… ๊ธˆ์•ก์„ ๋ชจ๋‘ ์žƒ๋Š”๋‹ค.

## ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

### ์ด๋ฆ„

- [x] ๋นˆ ๊ฐ’์„ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ
- [x] 1 ~ 10์ž ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒฝ์šฐ

### ํžˆํŠธ/์Šคํƒ ๋“œ
- [x] y ๋˜๋Š” n์ด ์•„๋‹Œ ๊ฐ’์„ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ

- [x] y ๋˜๋Š” n์ด ์•„๋‹Œ ๊ฐ’์„ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ
38 changes: 0 additions & 38 deletions src/main/java/BlackjackController.java

This file was deleted.

5 changes: 3 additions & 2 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import view.InputView;
import view.ResultView;
import ui.BlackjackController;
import ui.view.InputView;
import ui.view.ResultView;

public class Main {
public static void main(String[] args) {
Expand Down
99 changes: 68 additions & 31 deletions src/main/java/domain/BlackjackGame.java
Original file line number Diff line number Diff line change
@@ -1,59 +1,95 @@
package domain;

import domain.card.Card;
import domain.card.Deck;
import domain.dto.PlayerCreateDto;
import domain.dto.Profit;
import domain.dto.TotalProfit;
import domain.participant.BetMoney;
import domain.participant.Dealer;
import domain.participant.Player;
import domain.participant.Players;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;

public class BlackjackGame {
public static final int DEFAULT_HAND_NUMBER = 2;
public static final String DEALER_NAME = "๋”œ๋Ÿฌ";
public static final Score DEALER_HIT_STAND_BOUNDARY = new Score(16);
public static final int INITIAL_CARD_COUNT = 2;
private final Players players;
private final Dealer dealer;
private final Deck deck;
private int hitSequence = 0;

private BlackjackGame(Players players, Dealer dealer, Deck deck) {
this.players = players;
this.dealer = dealer;
this.deck = deck;
}

public static BlackjackGame createNewGame(List<PlayerCreateDto> playerCreateInfos) {
Deck deck = Deck.createWithAllCards();
List<Player> players = playerCreateInfos.stream()
.map(player -> Player.of(deck.drawInitialCards(), player.name(), player.betMoney()))
.toList();
return new BlackjackGame(Players.from(players), Dealer.createReady(deck.drawInitialCards()), deck);
}

public BlackjackGame(List<String> players) {
validate(players);
this.players = Players.from(players);
this.dealer = new Dealer(DEALER_NAME);
this.deck = new Deck();
public boolean isPlayerHitAvailable() {
return players.canHit(hitSequence);
}

private void validate(List<String> players) {
if (players == null) {
throw new IllegalArgumentException(Card.FIELD_CAN_NOT_BE_NULL);
public void hitPlayer(boolean hit) {
if (hit) {
players.hit(hitSequence, deck.draw());
return;
}
players.stay(hitSequence++);
}

public Player currentHitPlayer() {
return players.getPlayer(hitSequence);
}

public void giveHand() {
players.giveCardsToEachPlayers(deck, DEFAULT_HAND_NUMBER);
dealer.addCards(deck.drawWithAmount(DEFAULT_HAND_NUMBER));
public boolean isCurrentPlayerFinished() {
return players.isFinished(hitSequence);
}

public void playerHitStand(Function<Player, Boolean> decideHitStandFunc, Consumer<Player> printResultFunc) {
players.hitStandEachPlayers(decideHitStandFunc, deck, printResultFunc);
public void changeToNextPlayer() {
hitSequence++;
}

public void dealerHitStand(Consumer<Boolean> printDecisionOutput) {
while (true) {
boolean dealerHitStand = dealer.decideHitStand(DEALER_HIT_STAND_BOUNDARY);
if (!dealerHitStand) {
printDecisionOutput.accept(dealerHitStand);
break;
}
dealer.addCard(deck.draw());
printDecisionOutput.accept(dealerHitStand);
public List<Boolean> hitStandDealer() {
List<Boolean> history = new ArrayList<>();
while (!dealer.isFinished()) {
hitDealerByCondition(history);
}
history.add(false);
return history;
}

public List<RoundResult> getResult() {
return players.getResults(dealer);
private void hitDealerByCondition(List<Boolean> history) {
if (dealer.isHittable()) {
dealer.draw(deck.draw());
history.add(true);
return;
}
dealer.stay();
}

public TotalProfit getParticipantsProfits() {
List<Profit> playerProfits = collectPlayerResults();
BetMoney betMoney = calculateDealerResult(playerProfits);
return new TotalProfit(betMoney, playerProfits);
}

private List<Profit> collectPlayerResults() {
return players.getPlayers().stream()
.map(player -> new Profit(player, player.getProfit(player.judge(dealer))))
.toList();
}

private BetMoney calculateDealerResult(List<Profit> profits) {
return profits.stream()
.map(Profit::betMoney)
.reduce(BetMoney.ZERO, BetMoney::subtract);
}

public Players getPlayers() {
Expand All @@ -63,4 +99,5 @@ public Players getPlayers() {
public Dealer getDealer() {
return dealer;
}

}
15 changes: 15 additions & 0 deletions src/main/java/domain/CommonExceptionMessage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package domain;

public enum CommonExceptionMessage {
FIELD_CAN_NOT_BE_NULL("[ERROR] ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋กœ NULL์„ ๋„ฃ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.");

private final String message;

CommonExceptionMessage(String message) {
this.message = message;
}

public String getMessage() {
return message;
}
}
55 changes: 0 additions & 55 deletions src/main/java/domain/Rank.java

This file was deleted.

Loading