Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
d32da74
docs: ๋ธ”๋ž™์žญ ๋ฏธ์…˜ README ์ดˆ์•ˆ ์ž‘์„ฑ
simhokyung Mar 5, 2026
ce21f2c
docs(๋งฅ์Šค): README ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ทœ์น™ ์ถ”๊ฐ€
simhokyung Mar 5, 2026
75962f0
feat: InputView ์‚ฌ์šฉ์ž ์ด๋ฆ„ ์ž…๋ ฅ, ์นด๋“œ ์ถ”๊ฐ€ ์—ฌ๋ถ€ ๊ตฌํ˜„
simhokyung Mar 5, 2026
d7a1d18
test: ๋ฑ์— ์นด๋“œ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ํ…Œ์ŠคํŠธ ๊ตฌํ˜„
simhokyung Mar 5, 2026
f70f371
feat: Deck์—์„œ ์นด๋“œ๋ฅผ ๋ฝ‘๋Š” draw ๋ฉ”์„œ๋“œ ๊ตฌํ˜„
simhokyung Mar 5, 2026
88ff16f
feat: ์ฐธ๊ฐ€์ž ์ด๋ฆ„์„ ํŒŒ์‹ฑํ•˜๋Š” NameParser ๊ตฌํ˜„
simhokyung Mar 5, 2026
ee164cf
feat: ์นด๋“œ์ˆซ์ž 1~10์„ ๊ด€๋ฆฌํ•˜๋Š” Enum ๊ตฌํ˜„
simhokyung Mar 5, 2026
4865776
feat: ์นด๋“œ ๋ชจ์–‘์„ ๋‚˜ํƒ€๋‚ด๋Š” CardShape์„ Enum์œผ๋กœ ๊ตฌํ˜„
simhokyung Mar 5, 2026
a9f6fb3
feat: CardNumber(์นด๋“œ์ˆซ์ž)์™€ CardShape(์นด๋“œ๋ชจ์–‘)์„ ๋ฐ›์•„ ๊ด€๋ฆฌํ•˜๋Š” Card ๊ตฌํ˜„
simhokyung Mar 5, 2026
3af8be8
feat: ํ”Œ๋ ˆ์ด์–ด์™€ ๋”œ๋Ÿฌ๊ฐ€ ์†์— ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์นด๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋„๋ฉ”์ธ ๊ตฌํ˜„
simhokyung Mar 6, 2026
b8311b7
feat: ์ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” Score ๋„๋ฉ”์ธ ๊ตฌํ˜„(์›์‹œ๊ฐ’ ํฌ์žฅ)
simhokyung Mar 6, 2026
f1fa65a
feat: CardNumber ๋„๋ฉ”์ธ์— Symbol ์ถ”๊ฐ€
simhokyung Mar 6, 2026
6b70e46
feat: ๋”œ๋Ÿฌ์™€ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋ฐ›๋Š” ์นด๋“œ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” OutputView ๊ตฌํ˜„
simhokyung Mar 6, 2026
c7411c4
feat: Dealer ๋„๋ฉ”์ธ ๊ตฌํ˜„
simhokyung Mar 6, 2026
fc1a151
feat: ์ฐธ๊ฐ€์ž๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” Player ๋„๋ฉ”์ธ ๊ตฌํ˜„
simhokyung Mar 6, 2026
9ca1e73
feat: Player ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ชจ์•„๋†“์€ Players ๋„๋ฉ”์ธ ๊ตฌํ˜„
simhokyung Mar 6, 2026
9e59c62
feat: GameController ๋ผˆ๋Œ€ ๊ตฌ์„ฑ
simhokyung Mar 6, 2026
442c944
test: ์นด๋“œ ์ ์ˆ˜๊ณ„์‚ฐ test ์ž‘์„ฑ
simhokyung Mar 6, 2026
df03b79
feat: ์นด๋“œ ์ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ScoreCalculator ๋„๋ฉ”์ธ ๊ตฌํ˜„
simhokyung Mar 6, 2026
fe60635
feat: View์— ๊ฐ’ ์ „๋‹ฌ์„ ์œ„ํ•œ DealerResultDto, PlayerDto, PlayersDto, PlayerReโ€ฆ
minzzun99 Mar 7, 2026
c26fded
feat: ํŒŒ๋ผ๋ฏธํ„ฐ Dto๋กœ ๋ณ€๊ฒฝ, ์นด๋“œ ํ˜„ํ™ฉ ์ถœ๋ ฅ ๋กœ์ง ๋ฐ ์ ์ˆ˜ ์ถœ๋ ฅ ๋กœ์ง ๊ตฌํ˜„
minzzun99 Mar 7, 2026
896b284
refactor: Scanner ์ค‘๋ณต ์ œ๊ฑฐ
minzzun99 Mar 7, 2026
75c7e6f
test: Dealer ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
minzzun99 Mar 7, 2026
26c5b86
feat: Dealer์˜ ์นด๋“œ ์ถ”๊ฐ€ ๋กœ์ง ๊ตฌํ˜„
minzzun99 Mar 7, 2026
71ab035
test: ํ”Œ๋ ˆ์ด์–ด ํ…Œ์ŠคํŠธ ์ž‘์„ฑ
minzzun99 Mar 7, 2026
1cdc20b
feat: ํ”Œ๋ ˆ์ด์–ด์˜ ์นด๋“œ ์ถ”๊ฐ€ ๋กœ์ง ๋ฐ ๋ฒ„์ŠคํŠธ ์—ฌ๋ถ€ ํ™•์ธ ๋กœ์ง ์ถ”๊ฐ€
minzzun99 Mar 7, 2026
9ab3080
test: Players ํ…Œ์ŠคํŠธ ๊ตฌํ˜„
minzzun99 Mar 7, 2026
f7b44e2
feat: ๋ชจ๋“  ํ”Œ๋ ˆ์ด์–ด๋“ค์˜ ๋ฒ„์ŠคํŠธ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ๋กœ์ง ๊ตฌํ˜„
minzzun99 Mar 7, 2026
e95ef28
test: Name ํด๋ž˜์Šค ํ…Œ์ŠคํŠธ ์ž‘์„ฑ
minzzun99 Mar 7, 2026
a83d96c
feat: ํ”Œ๋ ˆ์ด์–ด์˜ ์ด๋ฆ„์„ ๊ด€๋ฆฌํ•˜๋Š” Name ํด๋ž˜์Šค ๊ตฌํ˜„
minzzun99 Mar 7, 2026
a46f68e
feat: GameController ๋ฐ Application ๊ตฌํ˜„
minzzun99 Mar 7, 2026
d694cd6
feat: ํ”Œ๋ ˆ์ด์–ด ์นด๋“œ ์ถ”๊ฐ€ ์ˆ˜๋ น ์—ฌ๋ถ€ ๋ฐ˜๋ณต ๋กœ์ง ์ถ”๊ฐ€
minzzun99 Mar 7, 2026
3272e76
feat: ์ตœ์ข… ์ŠนํŒจ ์ถœ๋ ฅ์„ ์œ„ํ•œ Dto ๊ตฌํ˜„
minzzun99 Mar 7, 2026
52506d2
fix: ์ ์ˆ˜ ๊ณ„์‚ฐ ๋กœ์ง ์ˆ˜์ •
minzzun99 Mar 7, 2026
0786e8f
feat: ์ „์ฒด ์ตœ์ข… ๊ฒฐ๊ณผ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ TotalFinalResult ๊ตฌํ˜„
minzzun99 Mar 7, 2026
c1cb694
feat: ํ”Œ๋ ˆ์ด์–ด๋ณ„ ์ตœ์ข… ๊ฒฐ๊ณผ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ FinalResult ๊ตฌํ˜„
minzzun99 Mar 7, 2026
c399b48
feat: ์Šน, ๋ฌด, ํŒจ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” Enum ๊ตฌํ˜„
minzzun99 Mar 7, 2026
b75dd97
feat: ์ตœ์ข… ์ŠนํŒจ ๊ฒฐ๊ณผ ์ถœ๋ ฅ์„ ์œ„ํ•œ ๋ฉ”์„œ๋“œ ์ถ”๊ฐ€
minzzun99 Mar 7, 2026
091289a
feat: ์ตœ์ข… ๊ฒฐ๊ณผ ์ถœ๋ ฅ์„ ์œ„ํ•œ ์ปจํŠธ๋กค๋Ÿฌ ๊ตฌํ˜„
minzzun99 Mar 7, 2026
48e7f1b
feat: ์ŠนํŒจ ํŒ์ •์„ ์œ„ํ•œ GameResultCalculator ๊ตฌํ˜„
minzzun99 Mar 7, 2026
9bb0cfd
feat: Dealer์™€ Player์˜ ๊ณตํ†ต๋œ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•œ Participant ํด๋ž˜์Šค ์ถ”๊ฐ€
simhokyung Mar 8, 2026
ea79a35
feat: Player์™€ ์ค‘๋ณต๋œ ๋ฉ”์„œ๋“œ ์ œ๊ฑฐํ•ด์„œ ๋‹ค์‹œ ๊ตฌํ˜„
simhokyung Mar 8, 2026
33c2910
feat: Dealer์™€ ์ค‘๋ณต๋œ ๋ฉ”์„œ๋“œ ์ œ๊ฑฐํ•ด์„œ ๋‹ค์‹œ ๊ตฌํ˜„
simhokyung Mar 8, 2026
14baaeb
refactor: ๋งค์ง ๋„˜๋ฒ„ ์ œ๊ฑฐ
simhokyung Mar 8, 2026
53119fc
refactor: ๋งค์ง ๋„˜๋ฒ„ ์ œ๊ฑฐ
simhokyung Mar 8, 2026
0337cad
refactor: ๊ณ„์‚ฐ ๋กœ์ง ์ธ๋ดํŠธ 1๋กœ ๋ฆฌํŒฉํ† ๋ง
simhokyung Mar 8, 2026
054b8a8
test: ์นด๋“œ,๋”œ๋Ÿฌ,ํ”Œ๋ ˆ์ด์–ด ์ดˆ๊ธฐํ™”์™€ ๊ฒŒ์ž„ ๊ทœ์น™์„ ๊ฐ€์ง€๋Š” Blackjack ํ…Œ์ŠคํŠธ ๊ตฌํ˜„
simhokyung Mar 8, 2026
efcb0f1
feat: ์นด๋“œ,๋”œ๋Ÿฌ,ํ”Œ๋ ˆ์ด์–ด ์ดˆ๊ธฐํ™”์™€ ๊ฒŒ์ž„ ๊ทœ์น™์„ ๊ฐ€์ง€๋Š” Blackjack ๋„๋ฉ”์ธ ๊ตฌํ˜„
simhokyung Mar 8, 2026
adcd3bc
feat: ๋”œ๋Ÿฌ์™€ ํ”Œ๋ ˆ์ด์–ด๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” GameParticipants ๋„๋ฉ”์ธ ๊ตฌํ˜„
simhokyung Mar 8, 2026
7e15fc9
refactor: ์นด๋“œ,ํ”Œ๋ ˆ์ด์–ด,๋”œ๋Ÿฌ๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ Blackjack ๋„๋ฉ”์ธ์œผ๋กœ ์˜ฎ๊ฒจ ์ฑ…์ž„ ๋ถ„๋ฆฌ
simhokyung Mar 8, 2026
e0175ca
refactor: DealerResultDto์™€ PlayerResultDto๋ฅผ ResultDto๋กœ ๋ณ€๊ฒฝ ๋ฐ ์ค„๋ฐ”๊ฟˆ, ๊ณต๋ฐฑ ์ œ๊ฑฐ
minzzun99 Mar 8, 2026
5c25a3c
refactor: Score ํด๋ž˜์Šค Record๋กœ ๋ณ€๊ฒฝ
minzzun99 Mar 8, 2026
6707507
refactor: ์ค„๋ฐ”๊ฟˆ ์ œ๊ฑฐ ๋ฐ ๊ณต๋ฐฑ ์ถ”๊ฐ€
minzzun99 Mar 8, 2026
96ec568
refactor: DealerFinalResultDto ๋‚ด๋ถ€ ์ธ๋ดํŠธ ์ œ๊ฑฐ๋ฅผ ์œ„ํ•œ ๋ฆฌํŒฉํ† ๋ง
minzzun99 Mar 8, 2026
1134e84
docs: README ์ˆ˜์ •
minzzun99 Mar 8, 2026
db4570d
refactor: GameController start() ๋ฉ”์„œ๋“œ๋ฅผ run()์œผ๋กœ ๋„ค์ž„ ๋ณ€๊ฒฝ
simhokyung Mar 11, 2026
06d9e2a
refactor: ๋งˆ์ง€๋ง‰ ์ค„์— ๊ฐœํ–‰๋ฌธ์ž ์ถ”๊ฐ€
simhokyung Mar 11, 2026
dca898f
refactor: cardNumber์™€ cardShape์— final ์ถ”๊ฐ€
simhokyung Mar 11, 2026
e77d81f
refactor: BlackjackGame ๋กœ์ง ์ˆ˜์ •
simhokyung Mar 11, 2026
c4d6107
refactor(test): BlackjackGame ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ์ถ”๊ฐ€
simhokyung Mar 11, 2026
5ccee00
refactor: Deck ๋ฉ”์„œ๋“œ ์ˆœ์„œ ๋ณ€๊ฒฝ
simhokyung Mar 11, 2026
c7d3de8
refactor: PlayersDto.from(players) ์ค‘๋ณต์‚ฌ์šฉ ์ œ๊ฑฐ
simhokyung Mar 11, 2026
d127436
refactor(test): Deck ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ์ถ”๊ฐ€
simhokyung Mar 11, 2026
b83635b
refactor: getDealerCardStatus ๋กœ์ง ์ œ๊ฑฐ
simhokyung Mar 11, 2026
7875c22
refactor: ์ „์ฒด ์ฝ”๋“œ ์ค„๋งž์ถค(Ctrl+alt+l)
simhokyung Mar 11, 2026
a08777d
refactor: ๋ฉ”์„œ๋“œ ์ˆœ์„œ ๋ฆฌํŒฉํ† ๋ง
simhokyung Mar 11, 2026
e649ed8
refactor: ๋””๋ฏธํ„ฐ์˜ ๋ฒ•์น™ ์ ์šฉ
simhokyung Mar 11, 2026
5d50dc6
refactor(all): ์ „์ฒด ์ฝ”๋“œ์— ๋””๋ฏธํ„ฐ์˜ ๋ฒ•์น™ ์ ์šฉ
simhokyung Mar 11, 2026
a0f1c13
Merge remote-tracking branch 'woowacourse/simhokyung' into simhokyung
simhokyung Mar 14, 2026
35c13aa
test: BettingMoney ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
simhokyung Mar 15, 2026
238769e
feat: ๋ฐฐํŒ…๊ธˆ์•ก์„ ๊ด€๋ฆฌํ•˜๋Š” BettingMoney ํด๋ž˜์Šค ๊ตฌํ˜„
simhokyung Mar 15, 2026
a88c4c6
feat: Handํด๋ž˜์Šค์— ๋ธ”๋ž™์žญ์„ ํŒ๋‹จํ•˜๋Š” isBlackjack ๋ฉ”์„œ๋“œ ์ถ”๊ฐ€
simhokyung Mar 15, 2026
f743aa8
test: Hand ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
simhokyung Mar 15, 2026
ac97136
refactor: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํด๋ž˜์Šค ์ œ๊ฑฐ
simhokyung Mar 15, 2026
6d80700
test: ํ”Œ๋ ˆ์ด์–ด ์ด๋ฆ„๊ณผ ๋ฐฐํŒ…๊ธˆ์•ก์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” PlayerCreationInfo ํ…Œ์ŠคํŠธ์ฝ”๋“œ ์ž‘์„ฑ
simhokyung Mar 15, 2026
edae525
test: ํ”Œ๋ ˆ์ด์–ด ์ด๋ฆ„๊ณผ ๋ฐฐํŒ…๊ธˆ์•ก์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” PlayerCreationInfo ํ…Œ์ŠคํŠธ์ฝ”๋“œ ์ž‘์„ฑ
simhokyung Mar 15, 2026
ade6ff6
refactor: ๋งˆ์ง€๋ง‰ ์ค„ ๊ฐœํ–‰๋ฌธ์ž ์ถ”๊ฐ€, ์˜คํƒ€ ์ˆ˜์ •
simhokyung Mar 15, 2026
91f0740
test: ์ˆ˜์ต ๊ณ„์‚ฐ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ์ฝ”๋“œ ์ž‘์„ฑ
simhokyung Mar 15, 2026
545e9ed
feat: ์ˆ˜์ต ๊ณ„์‚ฐ์„ ๋‹ด๋‹นํ•˜๋Š” ProfitCalculator ํด๋ž˜์Šค ์ž‘์„ฑ
simhokyung Mar 15, 2026
85c4481
refactor: ๋ฐฐํŒ…๊ธˆ์•ก์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ „์ฒด์ ์ธ ๊ตฌ์กฐ ๋ณ€๊ฒฝ
simhokyung Mar 15, 2026
e34f9d1
refactor(test): ๋ฐฐํŒ…๊ธˆ์•ก์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ „์ฒด์ ์ธ ๊ตฌ์กฐ ๋ณ€๊ฒฝ
simhokyung Mar 15, 2026
34cc79d
refactor: ๋ฐฐํŒ… ๊ธˆ์•ก ์ถ”๊ฐ€, ์ตœ์ข… ์ˆ˜์ต ์ถ”๊ฐ€๋กœ ์ธํ•œ ๊ตฌ์กฐ ๋ณ€๊ฒฝ
simhokyung Mar 15, 2026
7b050bb
refactor(test): ๋ฐฐํŒ… ๊ธˆ์•ก ์ถ”๊ฐ€๋กœ ์ธํ•œ ๊ตฌ์กฐ ๋ณ€๊ฒฝ
simhokyung Mar 15, 2026
dca12aa
refactor: ๋ฐฐํŒ… ๊ธˆ์•ก ์ถ”๊ฐ€๋กœ ์ธํ•œ ๊ตฌ์กฐ ๋ณ€๊ฒฝ ๋ฐ ์ ‘๊ทผ์ œ์–ด์ž ๋ณ€๊ฒฝ
simhokyung Mar 15, 2026
0910024
refactor: ๋ฐฐํŒ…๊ธˆ์•ก์ด ์ถ”๊ฐ€๋˜์–ด Controller ์ „์ฒด ๊ตฌ์กฐ ๋ณ€๊ฒฝ
simhokyung Mar 15, 2026
c7fb9c0
refactor: ์•ˆ์“ฐ๋Š” ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ ์ œ๊ฑฐ / ํŒจํ‚ค์ง€ ๋ถ„๋ฆฌ
simhokyung Mar 15, 2026
fa93618
docs: README ๊ธฐ๋Šฅ๊ตฌํ˜„ ๋ชฉ๋ก ์ถ”๊ฐ€
simhokyung Mar 15, 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
28 changes: 19 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,21 @@ pobi์นด๋“œ: 2ํ•˜ํŠธ, 8์ŠคํŽ˜์ด๋“œ, Aํด๋กœ๋ฒ„
1) ๋”œ๋Ÿฌ์™€ ๊ฐ ํ”Œ๋ ˆ์ด์–ด์˜ ์นด๋“œ ์ˆ˜๋ น ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
2) ๋”œ๋Ÿฌ ์นด๋“œ์˜ ํ•ฉ์ด 16์ดํ•˜์ธ ๊ฒฝ์šฐ, ์นด๋“œ ์ˆ˜๋ น ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
3) ๋”œ๋Ÿฌ์™€ ํ”Œ๋ ˆ์ด์–ด์˜ ์ˆ˜๋ นํ•œ ์นด๋“œ์™€ ์นด๋“œ์˜ ํ•ฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.
4) ์ตœ์ข… ์ŠนํŒจ ์—ฌ๋ถ€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
4) ์ตœ์ข… ์ˆ˜์ต์„ ์ถœ๋ ฅํ•œ๋‹ค.

### โ–ซ ์‹คํ–‰ ์˜ˆ์‹œ
```plaintext
๊ฒŒ์ž„์— ์ฐธ์—ฌํ•  ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”.(์‰ผํ‘œ ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฆฌ)
pobi,jason

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

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

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

Expand All @@ -40,20 +46,21 @@ y
pobi์นด๋“œ: 2ํ•˜ํŠธ, 8์ŠคํŽ˜์ด๋“œ, Aํด๋กœ๋ฒ„
pobi๋Š” ํ•œ์žฅ์˜ ์นด๋“œ๋ฅผ ๋” ๋ฐ›๊ฒ ์Šต๋‹ˆ๊นŒ?(์˜ˆ๋Š” y, ์•„๋‹ˆ์˜ค๋Š” n)
n
jason๋Š” ํ•œ์žฅ์˜ ์นด๋“œ๋ฅผ ๋” ๋ฐ›๊ฒ ์Šต๋‹ˆ๊นŒ?(์˜ˆ๋Š” y, ์•„๋‹ˆ์˜ค๋Š” n)
pobi์นด๋“œ: 2ํ•˜ํŠธ, 8์ŠคํŽ˜์ด๋“œ, Aํด๋กœ๋ฒ„
jason์€ ํ•œ์žฅ์˜ ์นด๋“œ๋ฅผ ๋” ๋ฐ›๊ฒ ์Šต๋‹ˆ๊นŒ?(์˜ˆ๋Š” y, ์•„๋‹ˆ์˜ค๋Š” n)
n
jason์นด๋“œ: 7ํด๋กœ๋ฒ„, K์ŠคํŽ˜์ด๋“œ

๋”œ๋Ÿฌ๋Š” 16์ดํ•˜๋ผ ํ•œ์žฅ์˜ ์นด๋“œ๋ฅผ ๋” ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

๋”œ๋Ÿฌ์นด๋“œ: 3๋‹ค์ด์•„๋ชฌ๋“œ, 9ํด๋กœ๋ฒ„, 8๋‹ค์ด์•„๋ชฌ๋“œ - ๊ฒฐ๊ณผ: 20
๋”œ๋Ÿฌ ์นด๋“œ: 3๋‹ค์ด์•„๋ชฌ๋“œ, 9ํด๋กœ๋ฒ„, 8๋‹ค์ด์•„๋ชฌ๋“œ - ๊ฒฐ๊ณผ: 20
pobi์นด๋“œ: 2ํ•˜ํŠธ, 8์ŠคํŽ˜์ด๋“œ, Aํด๋กœ๋ฒ„ - ๊ฒฐ๊ณผ: 21
jason์นด๋“œ: 7ํด๋กœ๋ฒ„, K์ŠคํŽ˜์ด๋“œ - ๊ฒฐ๊ณผ: 17

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

---
Expand All @@ -68,4 +75,7 @@ jason: ํŒจ
7) ๋ฝ‘ํžŒ ์นด๋“œ ์ œ์™ธํ•˜๋Š” ๊ธฐ๋Šฅ
8) ์นด๋“œ ๋ฑ ๋งŒ๋“ค์–ด์„œ ์„ž๊ธฐ
9) ์ŠนํŒจ ์—ฌ๋ถ€ ๊ณ„์‚ฐ๊ธฐ๋Šฅ
10) ๋”œ๋Ÿฌ์˜ ๋‘๋ฒˆ์งธ ์นด๋“œ๋ฅผ ์ˆจ๊ธฐ๋Š” ๊ธฐ๋Šฅ
10) ๋”œ๋Ÿฌ์˜ ๋‘๋ฒˆ์งธ ์นด๋“œ๋ฅผ ์ˆจ๊ธฐ๋Š” ๊ธฐ๋Šฅ
11) ๋ฐฐํŒ… ๊ธˆ์•ก์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ
12) ๋ธ”๋ž™์žญ ์—ฌ๋ถ€ ํŒ์ •๊ธฐ๋Šฅ
13) ์ตœ์ข… ์ˆ˜์ต ๊ณ„์‚ฐ ๊ธฐ๋Šฅ
79 changes: 61 additions & 18 deletions src/main/java/controller/GameController.java
Original file line number Diff line number Diff line change
@@ -1,34 +1,69 @@
package controller;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. ๊ธฐ์กด BlackjackGame.start() ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ฑ ์ •๋ณด ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•œ ์„ ํƒ์ด ์ ์ ˆํ•œ๊ฐ€?

    ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ PlayerCreationInfo๋ฅผ ์ง์ ‘ ๋งŒ๋“œ๋Š” ๊ฒƒ ์ž์ฒด๋„ ์ƒ์„ฑ์— ๊ด€์—ฌํ•˜๋Š” ํ–‰์œ„ ์•„๋‹๊นŒ์š”?
    ์•„๋ž˜ ** ์ฝ”๋ฉ˜ํŠธ๋„ ํ•จ๊ป˜ ํ™•์ธํ•ด๋ณด์„ธ์š”.

  2. Hand์˜ ์ฑ…์ž„ ๋ถ„๋ฆฌ

    ์ •๋‹ต์ด ์žˆ๋‹ค๊ธฐ๋ณด๋‹ค๋Š” ํŠธ๋ ˆ์ด๋“œ์˜คํ”„์˜ ๋ฌธ์ œ์˜ˆ์š”.

    ์‚ฌ์šฉํ•˜๋Š” ์ชฝ์—์„œ Hand.getScore()๋กœ ์“ฐ๋Š” ๊ฑด ๋™์ผํ•˜์ง€๋งŒ,
    Score๊ฐ€ isBust() ๊ฐ™์€ ํ–‰์œ„๋ฅผ ๊ฐ€์ง„๋‹ค๋ฉด ๋ˆ„๊ฐ€ ์ƒ์„ฑ ์ฑ…์ž„์„ ๊ฐ–๋Š”์ง€๊ฐ€ ์˜๋ฏธ ์žˆ์–ด์ ธ์š”.
    ํ˜„์žฌ ๊ตฌ์กฐ์—์„œ Hand๊ฐ€ new Score(...)๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ์œผ๋‹ˆ,
    ScoreCalculator์— ์œ„์ž„ํ–ˆ๋‹ค๊ณ  ํ•ด๋„ ์ƒ์„ฑ ์ฑ…์ž„์€ Hand์— ๋‚จ์•„์žˆ๋Š” ์…ˆ์ด์—์š”.

    ๊ฒฐ๊ตญ ๋ˆ„๊ฐ€ ์ƒ์„ฑ ์ฑ…์ž„์„ ๊ฐ–๋Š”์ง€์˜ ์ฐจ์ด์˜ˆ์š”.


import domain.BlackjackGame;
import domain.Dealer;
import domain.GameResultCalculator;
import domain.Player;
import domain.Players;
import domain.TotalFinalResult;
import dto.DealerFinalResultDto;
import domain.participant.BettingMoney;
import domain.participant.Dealer;
import domain.participant.Name;
import domain.participant.Player;
import domain.participant.PlayerCreationInfo;
import domain.participant.Players;
import domain.ProfitCalculator;
import dto.PlayerDto;
import dto.PlayersDto;
import dto.ResultDto;
import dto.TotalFinalResultsDto;
import view.InputView;
import view.OutputView;

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

public class GameController {

public void run() {
BlackjackGame blackjackGame = BlackjackGame.start(InputView.readParticipants());
BlackjackGame blackjackGame = startGame();
printInitialStatus(blackjackGame);
playGame(blackjackGame);
printGameResult(blackjackGame);
}

private BlackjackGame startGame() {
List<String> names = InputView.readParticipants();
List<PlayerCreationInfo> playerCreationInfos = createPlayerCreationInfos(names);
return BlackjackGame.start(playerCreationInfos);
}

private void printInitialStatus(BlackjackGame blackjackGame) {
Dealer dealer = blackjackGame.getDealer();
Players players = blackjackGame.getPlayers();

PlayersDto playersDto = PlayersDto.from(players);

OutputView.printHandOutMessage(playersDto);
OutputView.printCardStatus(playersDto, ResultDto.fromDealerInitial(dealer));
}

private void playGame(BlackjackGame blackjackGame) {
Players players = blackjackGame.getPlayers();
addPlayersCard(blackjackGame, players);
addDealerCards(blackjackGame);
printCardResults(ResultDto.from(dealer), PlayersDto.from(players));
printFinalResults(players, dealer);
}

private void printGameResult(BlackjackGame blackjackGame) {
Dealer dealer = blackjackGame.getDealer();
Players players = blackjackGame.getPlayers();
PlayersDto afterPlayersDto = PlayersDto.from(players);

printCardResults(ResultDto.from(dealer), afterPlayersDto);
printProfitResults(players, dealer);
}

private List<PlayerCreationInfo> createPlayerCreationInfos(List<String> names) {
List<PlayerCreationInfo> playerCreationInfos = new ArrayList<>();
for (String name : names) {
Integer money = InputView.readBettingMoney(name);
System.out.println();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

System.out.println()์ด ์ปจํŠธ๋กค๋Ÿฌ์— ์ง์ ‘ ์žˆ๋„ค์š”.
์ถœ๋ ฅ์€ OutputView์— ์œ„์ž„ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–จ๊นŒ์š”?

playerCreationInfos.add(PlayerCreationInfo.of(Name.from(name), BettingMoney.of(money)));
}
return playerCreationInfos;
}

private void addPlayersCard(BlackjackGame blackjackGame, Players players) {
Expand All @@ -51,15 +86,23 @@ private void addDealerCards(BlackjackGame blackjackGame) {
}
}

private void printCardResults(ResultDto resultDto, PlayersDto playersDto) {
OutputView.printCardResult(resultDto, playersDto);
private void printCardResults(ResultDto resultDto, PlayersDto afterPlayersDto) {
OutputView.printCardResult(resultDto, afterPlayersDto);
}

private void printFinalResults(Players players, Dealer dealer) {
TotalFinalResult totalFinalResult = GameResultCalculator.checkGameResult(players, dealer);
DealerFinalResultDto dealerFinalResultDto = DealerFinalResultDto.from(totalFinalResult);
TotalFinalResultsDto totalFinalResultsDto = TotalFinalResultsDto.from(totalFinalResult);
private void printProfitResults(Players players, Dealer dealer) {
String dealerProfit = ProfitCalculator.formatProfit(
ProfitCalculator.calculateDealerProfit(players, dealer)
);

List<String> playerProfitResults = players.getPlayers().stream()
.map(player -> String.format("%s: %s%n",
player.getNameValue(),
ProfitCalculator.formatProfit(
ProfitCalculator.calculatePlayerProfit(player, dealer)
)))
.toList();
Comment on lines +98 to +104

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ปจํŠธ๋กค๋Ÿฌ์—์„œ String.format์œผ๋กœ ์ง์ ‘ ํฌ๋งทํŒ…ํ•˜๊ณ  ์žˆ์–ด์š”.
์ถœ๋ ฅ ํ˜•์‹์— ๋Œ€ํ•œ ์ฑ…์ž„์€ OutputView๊ฐ€ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด ์ž์—ฐ์Šค๋Ÿฝ์ง€ ์•Š์„๊นŒ์š”?


OutputView.printTotalResult(dealerFinalResultDto, totalFinalResultsDto);
OutputView.printTotalProfit(dealerProfit, playerProfitResults);
}
}
35 changes: 22 additions & 13 deletions src/main/java/domain/BlackjackGame.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
package domain;

import domain.card.Card;
import domain.card.Deck;
import domain.hand.Hand;
import domain.participant.*;

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

Expand All @@ -14,13 +19,13 @@ private BlackjackGame(Deck deck, GameParticipants participants) {
this.participants = participants;
}

public static BlackjackGame start(List<String> names) {
return start(names, Deck.createDeck());
public static BlackjackGame start(List<PlayerCreationInfo> playerCreationInfos) {
return start(playerCreationInfos, Deck.createDeck());
}

public static BlackjackGame start(List<String> names, Deck deck) {
public static BlackjackGame start(List<PlayerCreationInfo> playerCreationInfos, Deck deck) {
Dealer dealer = Dealer.from(new Hand(initCards(deck)));
Players players = createPlayers(names, deck);
Players players = createPlayers(playerCreationInfos, deck);
return new BlackjackGame(deck, GameParticipants.of(dealer, players));
}

Expand All @@ -29,7 +34,7 @@ public void addPlayerCard(Player player) {
}

public boolean playDealerTurn() {
if (cannotDealerDraw()) {
if (participants.cannotDealerDraw()) {
return false;
}
drawDealerCards();
Expand All @@ -44,8 +49,8 @@ public Players getPlayers() {
return participants.getPlayers();
}

private boolean cannotDealerDraw() {
return participants.isAllPlayersBust() || !getDealer().checkThreshold();
public List<Player> getPlayersValue() {
return participants.getPlayers().getPlayers();
}

private void drawDealerCards() {
Expand All @@ -54,16 +59,20 @@ private void drawDealerCards() {
}
}

private static Players createPlayers(List<String> names, Deck deck) {
private static Players createPlayers(List<PlayerCreationInfo> playerCreationInfos, Deck deck) {
List<Player> players = new ArrayList<>();
for (String name : names) {
players.add(createPlayer(name, deck));
for (PlayerCreationInfo playerCreationInfo : playerCreationInfos) {
players.add(createPlayer(playerCreationInfo, deck));
}
return Players.from(players);
}

private static Player createPlayer(String name, Deck deck) {
return Player.of(Name.from(name), new Hand(initCards(deck)));
private static Player createPlayer(PlayerCreationInfo playerCreationInfo, Deck deck) {
return Player.of(
playerCreationInfo.getName(),
new Hand(initCards(deck)),
playerCreationInfo.getBettingMoney()
);
}

private static List<Card> initCards(Deck deck) {
Expand All @@ -73,4 +82,4 @@ private static List<Card> initCards(Deck deck) {
}
return cards;
}
}
}
31 changes: 0 additions & 31 deletions src/main/java/domain/FinalResult.java

This file was deleted.

24 changes: 0 additions & 24 deletions src/main/java/domain/GameResultCalculator.java

This file was deleted.

23 changes: 0 additions & 23 deletions src/main/java/domain/Player.java

This file was deleted.

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

import domain.participant.Dealer;
import domain.participant.Player;
import domain.participant.Players;

public class ProfitCalculator {
private static final double BLACKJACK_PROFIT_RATE = 1.5;

public static double calculatePlayerProfit(Player player, Dealer dealer) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ํ•จ์ˆ˜(๋˜๋Š” ๋ฉ”์„œ๋“œ)์˜ ๊ธธ์ด๊ฐ€ 10๋ผ์ธ์„ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋„๋ก ๊ตฌํ˜„ํ•œ๋‹ค.

int bettingMoney = player.getBettingMoneyValue();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์›์‹œ๊ฐ’์„ ์ง์ ‘ ๋…ธ์ถœํ•˜๊ณ  ์žˆ๋„ค์š”.
์™ธ๋ถ€์—์„œ ๊ธˆ์•ก์„ ๊บผ๋‚ด ๊ณ„์‚ฐํ•˜๋Š” ๋Œ€์‹ , BettingMoney๊ฐ€ ์ง์ ‘ ๊ณ„์‚ฐํ•ด์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์€ ์–ด๋–จ๊นŒ์š”?

int playerScore = player.getScoreValue();
int dealerScore = dealer.getScoreValue();

if (player.isBlackjack() && dealer.isBlackjack()) {
return 0;
}
if (player.isBlackjack()) {
return bettingMoney * BLACKJACK_PROFIT_RATE;
}
if (dealer.isBlackjack()) {
return -bettingMoney;
}
if (player.isBust()) {
return -bettingMoney;
}
if (dealer.isBust()) {
return bettingMoney;
}
if (playerScore > dealerScore) {
return bettingMoney;
}
if (playerScore < dealerScore) {
return -bettingMoney;
}
return 0;
}

public static double calculateDealerProfit(Players players, Dealer dealer) {
return -players.getPlayers().stream()
.mapToDouble(player -> calculatePlayerProfit(player, dealer))
.sum();
}

public static String formatProfit(double profit) {
if (profit == (long) profit) {
return String.valueOf((long) profit);
}
return String.valueOf(profit);
}
}
Loading