Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
46827cf
docs: κΈ°λŠ₯ λͺ©λ‘ μž‘μ„±
Jihyun3478 Mar 4, 2026
fa3545b
feat: κ²Œμž„μ— μ°Έμ—¬ν•  이름을 μž…λ ₯λ°›λŠ” κΈ°λŠ₯ κ΅¬ν˜„
Jihyun3478 Mar 4, 2026
0fa9d76
feat: 각 ν”Œλ ˆμ΄μ–΄μ˜ 이름을 μ‰Όν‘œλ₯Ό κΈ°μ€€μœΌλ‘œ λΆ„λ¦¬ν•˜λŠ” κΈ°λŠ₯ κ΅¬ν˜„
Jihyun3478 Mar 4, 2026
08a0d5f
feat: ν•œ μž₯의 μΉ΄λ“œλ₯Ό μΆ”κ°€λ‘œ 받을지 μ—¬λΆ€λ₯Ό μž…λ ₯λ°›λŠ” κΈ°λŠ₯ κ΅¬ν˜„
Jihyun3478 Mar 4, 2026
e0e3e9c
feat: μΉ΄λ“œ 점수λ₯Ό κ³„μ‚°ν•˜λŠ” κΈ°λŠ₯ κ΅¬ν˜„
Jihyun3478 Mar 4, 2026
a9b153c
feat: 초기 μΉ΄λ“œλ₯Ό μƒμ„±ν•˜λŠ” κΈ°λŠ₯ κ΅¬ν˜„
Jihyun3478 Mar 4, 2026
81cf09d
feat: μΉ΄λ“œλ₯Ό μ„žλŠ” κΈ°λŠ₯ κ΅¬ν˜„
Jihyun3478 Mar 4, 2026
f3b770a
feat: λ²„μŠ€νŠΈλ₯Ό νŒμ •ν•˜λŠ” κΈ°λŠ₯ κ΅¬ν˜„
Jihyun3478 Mar 4, 2026
673c8b9
docs: κΈ°λŠ₯ λͺ©λ‘ μ—…λ°μ΄νŠΈ
Jihyun3478 Mar 4, 2026
7bf557d
refactor: 이쀑 forλ¬Έ stream으둜 λ³€ν™˜
Jihyun3478 Mar 4, 2026
0f6113a
feat: μ˜ˆμ™Έλ‘œ AceλŠ” 1 λ˜λŠ” 11을 μœ λ¦¬ν•œλŒ€λ‘œ κ³„μ‚°ν•˜λŠ” κΈ°λŠ₯ κ΅¬ν˜„
Jihyun3478 Mar 5, 2026
1219979
feat: ν”Œλ ˆμ΄μ–΄ 생성
Jihyun3478 Mar 5, 2026
608e991
feat: μΉ΄λ“œλ₯Ό ν•œ μž₯ λ½‘λŠ” κΈ°λŠ₯ κ΅¬ν˜„
Jihyun3478 Mar 5, 2026
ff51566
feat: ν”Œλ ˆμ΄μ–΄μ˜ ν˜„μž¬ 보유 μΉ΄λ“œλ₯Ό 좜λ ₯ν•˜λŠ” κΈ°λŠ₯ κ΅¬ν˜„
JunHyung1206 Mar 5, 2026
1448ecf
feat: κ²Œμž„ μ§„ν–‰ 상황을 좜λ ₯ν•˜λŠ” κΈ°λŠ₯ κ΅¬ν˜„
Jihyun3478 Mar 5, 2026
5c5616e
feat: μ΄ˆκΈ°μ— ν”Œλ ˆμ΄μ–΄κ°€ μΉ΄λ“œ 2μž₯을 λ°›λŠ” κΈ°λŠ₯ κ΅¬ν˜„
JunHyung1206 Mar 5, 2026
43cf9f3
fix: κ²Œμž„ μ§„ν–‰ 상황 좜λ ₯ κΈ°λŠ₯ 버그 μˆ˜μ •
JunHyung1206 Mar 5, 2026
ffb8636
feat: λ”œλŸ¬μ˜ 점수의 합이 16 μ΄ν•˜μ΄λ©΄, μΉ΄λ“œλ₯Ό ν•œ μž₯ λ°›λŠ” κΈ°λŠ₯ κ΅¬ν˜„
Jihyun3478 Mar 5, 2026
3352131
refactor: λ©”μ„œλ“œ 뢄리
Jihyun3478 Mar 5, 2026
40b3539
feat: λ”œλŸ¬λŠ” μ²˜μŒμ— 받은 2μž₯의 합계가 16 μ΄ν•˜μ΄λ©΄ 1μž₯의 μΉ΄λ“œλ₯Ό λ°›λŠ” κΈ°λŠ₯ κ΅¬ν˜„
JunHyung1206 Mar 5, 2026
093cafe
docs: μ™„λ£Œλœ κΈ°λŠ₯ λͺ©λ‘ μˆ˜μ •
JunHyung1206 Mar 5, 2026
46f64d4
fix: λ²„μŠ€νŠΈμ΄λ©΄, μΉ΄λ“œλ₯Ό μΆ”κ°€μ μœΌλ‘œ λ°›μ§€ μ•Šλ„λ‘ μˆ˜μ •
JunHyung1206 Mar 5, 2026
204b49e
feat: κ²Œμž„μ„ μ™„λ£Œν•œ ν›„ 각 ν”Œλ ˆμ΄μ–΄λ³„λ‘œ 승패λ₯Ό 좜λ ₯ν•˜λŠ” κΈ°λŠ₯ κ΅¬ν˜„
Jihyun3478 Mar 5, 2026
d86c65d
branch merge
JunHyung1206 Mar 5, 2026
a59d954
fix: λ²„μŠ€νŠΈ 및 좜λ ₯ 둜직 λˆ„λ½ μˆ˜μ •
Jihyun3478 Mar 5, 2026
0d9c1d3
feat: ν”Œλ ˆμ΄μ–΄μ˜ μ μˆ˜κ°€ λ²„μŠ€νŠΈμΌ 경우, λ²„μŠ€νŠΈλ‘œ 좜λ ₯ν•˜λŠ” κΈ°λŠ₯ κ΅¬ν˜„
JunHyung1206 Mar 5, 2026
689def1
feat: ν”Œλ ˆμ΄μ–΄λ³„λ‘œ 승/패 νŒλ³„ κΈ°λŠ₯ κ΅¬ν˜„
JunHyung1206 Mar 5, 2026
ce6e1d1
feat: κ²Œμž„μ„ μ™„λ£Œν•œ ν›„ 각 ν”Œλ ˆμ΄μ–΄λ³„λ‘œ 승패λ₯Ό 좜λ ₯ν•˜λŠ” κΈ°λŠ₯ κ΅¬ν˜„
Jihyun3478 Mar 5, 2026
979a454
refactor: 도메인 ν…ŒμŠ€νŠΈ -> 도메인 νŒ¨ν‚€μ§€λ‘œ 이동
Jihyun3478 Mar 5, 2026
eec36bb
docs: update GitHub PR template
woowahan-neo Mar 5, 2026
ac4041f
docs: update GitHub PR template
woowahan-neo Mar 5, 2026
549740e
docs: update GitHub PR template
woowahan-neo Mar 5, 2026
9f9b1ad
feat: 이름 μž…λ ₯에 λŒ€ν•œ 검증 둜직 κ΅¬ν˜„
JunHyung1206 Mar 6, 2026
cf4b74f
refactor: InputParser, InputValidator λͺ¨λ‘ util νŒ¨ν‚€μ§€λ‘œ 이동
Jihyun3478 Mar 6, 2026
a17415b
refactor: 곡톡 둜직 Participant 뢄리
Jihyun3478 Mar 6, 2026
617d459
refactor: λ©”μ„œλ“œ 뢄리 및 μžλ°” μ»¨λ²€μ…˜ 적용
Jihyun3478 Mar 6, 2026
37df140
docs: λ¦¬λ“œλ―Έ μ—…λ°μ΄νŠΈ
Jihyun3478 Mar 6, 2026
165d761
docs: λ―Έμ…˜ 쀑 기둝 μΆ”κ°€
Jihyun3478 Mar 6, 2026
746d402
refactor: 슀트림으둜 초기 μΉ΄λ“œ κ΅¬μ„±ν•˜λ„λ‘ λ¦¬νŒ©ν† λ§
JunHyung1206 Mar 6, 2026
7d05f19
refactor: λ§€μ„œλ“œλͺ… μˆ˜μ •
JunHyung1206 Mar 6, 2026
e4f749e
refactor: ν…ŒμŠ€νŠΈ 슀트림으둜 λ¦¬νŒ©ν† λ§
JunHyung1206 Mar 6, 2026
5975349
refactor: μΉ΄λ“œ 덱을 Deque둜 λ¦¬νŒ©ν† λ§
JunHyung1206 Mar 6, 2026
e8d2141
refactor: λ³€μˆ˜λͺ… λ³€κ²½
JunHyung1206 Mar 6, 2026
d00889c
chore: μΉ΄λ“œμ— λŒ€ν•œ 클래슀λ₯Ό card νŒ¨ν‚€μ§€λ‘œ 뢄리
JunHyung1206 Mar 6, 2026
f450cf5
refactor: μΉ΄λ“œμ— λŒ€ν•΄ ν•„λ“œ final처리 및 μ˜€λ²„λΌμ΄λ“œλœ λ©”μ„œλ“œ μ‚­μ œ
JunHyung1206 Mar 6, 2026
f32a7e0
refactor: λ³€μˆ˜λͺ… μˆ˜μ •
JunHyung1206 Mar 6, 2026
2c422f3
refactor: 슀트림으둜 λ¦¬νŒ©ν† λ§
JunHyung1206 Mar 6, 2026
2ee638e
refactor: ν•¨μˆ˜λͺ… λ³€κ²½
JunHyung1206 Mar 6, 2026
7a350b0
refactor: 컨트둀러 둜직 λ¦¬νŒ©ν† λ§
JunHyung1206 Mar 6, 2026
5c81d06
refactor: λ¦¬νŒ©ν† λ§μ— λ”°λ₯Έ ν…ŒμŠ€νŠΈ μ½”λ“œ λ³€κ²½
JunHyung1206 Mar 6, 2026
29d4a82
refactor: 의미 μ—†λŠ” 곡백 및 importλ¬Έ 제거
JunHyung1206 Mar 7, 2026
a24891a
refactor: 클래슀 이름 λ³€κ²½
JunHyung1206 Mar 7, 2026
b576718
refactor: HitOption에 λŒ€ν•΄ Enum으둜 처리
JunHyung1206 Mar 7, 2026
993cbee
refactor: processRound ν•¨μˆ˜ λ¦¬νŒ©ν† λ§
JunHyung1206 Mar 7, 2026
2d68599
refactor: μΉ΄λ“œ 점수 계산 λ¦¬νŒ©ν† λ§
JunHyung1206 Mar 7, 2026
7f3db81
refactor: μ μˆ˜κ³„μ‚° 둜직 λ¦¬νŒ©ν† λ§
JunHyung1206 Mar 7, 2026
dddbb81
refactor: μ€„λ°”κΏˆ 제거
JunHyung1206 Mar 7, 2026
60eb5f1
refactor: μ€‘λ³΅λœ ν•¨μˆ˜ μ‚­μ œ
JunHyung1206 Mar 8, 2026
532b754
refactor: ν•¨μˆ˜ μˆœμ„œ λ³€κ²½
JunHyung1206 Mar 8, 2026
fdec1f5
refactor: ν•¨μˆ˜λͺ… λ³€κ²½
JunHyung1206 Mar 8, 2026
7a86e73
refactor: 도메인과 λ·° 뢄리, DTO μ‚¬μš©
JunHyung1206 Mar 8, 2026
7f09403
refactor: νŒ¨ν‚€μ§€ 뢄리
JunHyung1206 Mar 8, 2026
9287196
refactor: κ²Œμž„ 진행을 μ„œλΉ„μŠ€λ‘œ λ¦¬νŒ©ν† λ§
JunHyung1206 Mar 8, 2026
a0f7d3c
test: λ”œλŸ¬μ˜ 히트 쑰건 ν…ŒμŠ€νŠΈ μˆ˜μ •
JunHyung1206 Mar 8, 2026
470cee2
refactor: κ²°κ³Ό 집계 dto둜 λ¦¬νŒ©ν† λ§
JunHyung1206 Mar 8, 2026
8a35d2c
refactor: handCard 일급 μ»¬λ ‰μ…˜μœΌλ‘œ λ¦¬νŒ©ν† λ§
JunHyung1206 Mar 9, 2026
da9aca3
refactor: dto λ¦¬νŒ©ν† λ§
JunHyung1206 Mar 9, 2026
4090300
refactor: λ”œλŸ¬μ™€ 덱 뢄리
JunHyung1206 Mar 9, 2026
d009a90
refactor: Players 일급 μ»¬λ ‰μ…˜μœΌλ‘œ λ¦¬νŒ©ν† λ§
JunHyung1206 Mar 9, 2026
9e28bcf
test: μΉ΄λ“œμ— λŒ€ν•œ ν…ŒμŠ€νŠΈ λ³€μˆ˜λͺ… μˆ˜μ •
JunHyung1206 Mar 10, 2026
9b00b90
refactor: 덱이 λΉ„μ—ˆμ„ λ•Œ μ˜ˆμ™Έλ₯Ό λ°˜ν™˜ν•˜λ„λ‘ λ³€κ²½
JunHyung1206 Mar 10, 2026
4ff3400
test: ν•Έλ“œμ—μ„œ 점수 계산을 ν…ŒμŠ€νŠΈν•˜λ„λ‘ μˆ˜μ •
JunHyung1206 Mar 10, 2026
759a84e
test: μΉ΄λ“œλ₯Ό ν•œμž₯ λ°›λŠ” ν…ŒμŠ€νŠΈ μž‘μ„±
JunHyung1206 Mar 10, 2026
152369d
test: λ”œλŸ¬κ°€ μΉ΄λ“œλ₯Ό λ°›λŠ” 쑰건에 λŒ€ν•΄μ„œ ν…ŒμŠ€νŠΈ μž‘μ„±
JunHyung1206 Mar 10, 2026
a503891
test: import 정리
JunHyung1206 Mar 10, 2026
09855c9
test: 승패 νŒμ •μ— λŒ€ν•œ ν…ŒμŠ€νŠΈ μ½”λ“œ μž‘μ„±
JunHyung1206 Mar 10, 2026
1c6d2e9
test: static import둜 λ³€κ²½
JunHyung1206 Mar 10, 2026
e938e19
refactor: Score Value Object둜 λ³€κ²½
JunHyung1206 Mar 10, 2026
fa372ab
feat: Money κ°’ 객체 κ΅¬ν˜„
JunHyung1206 Mar 11, 2026
502cd03
docs: κΈ°λŠ₯ λͺ©λ‘ μˆ˜μ •
JunHyung1206 Mar 11, 2026
bce5c1e
feat: μ‚¬μš©μž λ² νŒ… κΈ°λŠ₯ κ΅¬ν˜„
JunHyung1206 Mar 11, 2026
0352a3f
test: λΈ”λž™μž­μΈμ§€ ν™•μΈν•˜λŠ” ν…ŒμŠ€νŠΈ μ½”λ“œ μž‘μ„±
JunHyung1206 Mar 11, 2026
2c8259e
feat: κΈˆμ•‘ ν•©μ‚° κΈ°λŠ₯ κ΅¬ν˜„
JunHyung1206 Mar 11, 2026
6a0a472
feat: λ°°νŒ… μž…λ ₯ κΈ°λŠ₯ κ΅¬ν˜„
JunHyung1206 Mar 11, 2026
b89bdfa
refactor: STAND -> STAY둜 μƒμˆ˜ λ³€κ²½
JunHyung1206 Mar 12, 2026
a6da832
refactor: μƒνƒœ νŒ¨ν„΄μœΌλ‘œ 뢄리
JunHyung1206 Mar 13, 2026
82e0fd7
refactor: google java style둜 이름 λ³€κ²½
JunHyung1206 Mar 13, 2026
e70203a
refactor: Score 클래슀 μ‚­μ œ
JunHyung1206 Mar 13, 2026
3334884
refactor: λ‹€ν˜•μ„± μ΄μš©ν•˜μ—¬ 쀑볡 제거
JunHyung1206 Mar 13, 2026
893679d
feat: λ² νŒ… μ •μ‚° κΈ°λŠ₯ κ΅¬ν˜„
JunHyung1206 Mar 13, 2026
c044c8a
refactor: λ§€μ§λ„˜λ²„ μƒμˆ˜ν™”
JunHyung1206 Mar 13, 2026
2d8075d
test: μ˜λ―Έμ—†λŠ” ν…ŒμŠ€νŠΈ μ‚­μ œ
JunHyung1206 Mar 13, 2026
e8f7aa8
fix: betting -> batting μ˜€νƒˆμž μˆ˜μ •
JunHyung1206 Mar 14, 2026
b44b121
fix: final둜 μˆ˜μ •
JunHyung1206 Mar 14, 2026
8e70a43
refactor: 쑰건문 처리λ₯Ό 기쀀을 running으둜 μˆ˜μ •
JunHyung1206 Mar 14, 2026
91089f1
refactor: 수읡 계산을 Profit이 슀슀둜 ν•˜λ„λ‘ μˆ˜μ •
JunHyung1206 Mar 14, 2026
1478cf7
fix: μž…λ ₯ 곡백 였λ₯˜ μˆ˜μ •
JunHyung1206 Mar 14, 2026
d4fd805
refactor: name ν”Œλ ˆμ΄μ–΄μ—μ„œλ§Œ μ‚¬μš©ν•˜λ„λ‘ μˆ˜μ •
JunHyung1206 Mar 14, 2026
c6cc8bd
fix: μ˜ˆμ™Έ λ©”μ‹œμ§€ μˆ˜μ •
JunHyung1206 Mar 14, 2026
e9ecd90
refactor: 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œμ—μ„œ 직접 μƒμ„±ν•˜λ„λ‘ μˆ˜μ •
JunHyung1206 Mar 14, 2026
794e3aa
refactor: import μ™€μΌλ“œ μΉ΄λ“œ 제거
JunHyung1206 Mar 14, 2026
47a8d86
feat: λ”œλŸ¬κ°€ λΈ”λž™μž­μΈ 경우의 흐름 μΆ”κ°€
JunHyung1206 Mar 14, 2026
9b604f0
docs: λ¦¬λ“œλ―Έ κΈ°λŠ₯ μ‹œλ‚˜λ¦¬μ˜€ μˆ˜μ • 및 μ‚°μΆœλ¬Ό μž‘μ„±
JunHyung1206 Mar 14, 2026
1aabb95
docs: κΈ°λŠ₯ κ΅¬ν˜„ λͺ©λ‘ μˆ˜μ •
JunHyung1206 Mar 14, 2026
c1191f2
refactor: μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” import 및 ν•¨μˆ˜ 제거
JunHyung1206 Mar 14, 2026
1f57816
Merge branch 'woowacourse:main' into step2
JunHyung1206 Mar 14, 2026
00f0f79
Merge commit '1c6d2e933e3dd520657aeda74a5accb1976c5b94' into step2cherry
JunHyung1206 Mar 14, 2026
0b60897
Merge branch 'step2' into step2cherry
JunHyung1206 Mar 14, 2026
3d671a6
fix: λˆμ— λŒ€ν•΄μ„œ long으둜 처리
JunHyung1206 Mar 13, 2026
bb4c1b6
refactor: HandCards의 μƒμ„±μž μ‚­μ œ
JunHyung1206 Mar 15, 2026
78d9e9d
refactor: 수읡λ₯ μ„ μœ„μž„ν•˜λŠ” 객체 생성(GameResult)
JunHyung1206 Mar 15, 2026
eb915db
refactor: 각 μƒνƒœκ°€ λ²„μŠ€νŠΈμΈμ§€, λΈ”λž™μž­μΈμ§€ νŒλ³„ν•˜λ„λ‘ λ³€κ²½
JunHyung1206 Mar 15, 2026
10ae24c
fix: battingμ—μ„œ betting으둜 λ³€κ²½
JunHyung1206 Mar 15, 2026
8b3307b
refactor: κ²Œμž„μ„ μ¦‰μ‹œ λλ‚΄λŠ” μ±…μž„μ€ service둜 μœ„μž„
JunHyung1206 Mar 15, 2026
bab3934
refactor: GameResult 이름을 BettingResult으둜 λ³€κ²½
JunHyung1206 Mar 15, 2026
85b5ef6
refactor: earningRate μ •μˆ˜λ‘œ 처리
JunHyung1206 Mar 15, 2026
c9e8f68
refactor: Profit λ³€μˆ˜ λ³€κ²½
JunHyung1206 Mar 15, 2026
46db82b
refactor: HandCardProcessor λ„μž…
JunHyung1206 Mar 15, 2026
0d345d9
test: 수읡이 μ–΄λ–»κ²Œ μ²˜λ¦¬λ˜λŠ”μ§€ ν…ŒμŠ€νŠΈν•œλ‹€.
JunHyung1206 Mar 15, 2026
f3e64ac
feat: μ†Œμˆ˜μ μ— λŒ€ν•΄μ„œ 반올림으둜 μ²˜λ¦¬ν•  수 μžˆλ„λ‘ ν•œλ‹€.
JunHyung1206 Mar 15, 2026
3ee47c3
feat: λ² νŒ…μ— λŒ€ν•΄ κ·œμΉ™ μΆ”κ°€
JunHyung1206 Mar 15, 2026
58f1755
fix: λ² νŒ… κΈˆμ•‘μ΄ 0이 λ˜λŠ” κ²½μš°μ— λŒ€ν•΄μ„œ μˆ˜μ •
JunHyung1206 Mar 15, 2026
89341d4
fix: InputNumberParser μˆ˜μ •
JunHyung1206 Mar 15, 2026
ba9b885
test: μƒνƒœμ˜ 전이에 λŒ€ν•œ ν…ŒμŠ€νŠΈ μΆ”κ°€
JunHyung1206 Mar 15, 2026
3ec339e
docs: κΈ°λŠ₯ λͺ©λ‘ μ—…λ°μ΄νŠΈ
JunHyung1206 Mar 15, 2026
52653a9
docs: κΈ°λŠ₯ λͺ©λ‘ μ—…λ°μ΄νŠΈ
JunHyung1206 Mar 15, 2026
0da6c59
test: λ² νŒ… κΈˆμ•‘μ€ 1000원 λ‹¨μœ„λ‘œ κ΅¬μ„±ν•˜κΈ°λ‘œ ν•˜μ˜€μœΌλ―€λ‘œ, 반올림 ν…ŒμŠ€νŠΈμ— λŒ€ν•΄μ„œλŠ” μ‚­μ œ
JunHyung1206 Mar 15, 2026
ebb82b9
test: 경계 κ°’ ν…ŒμŠ€νŠΈ μ½”λ“œ μž‘μ„±
JunHyung1206 Mar 15, 2026
8ba8483
refactor: 슀트림으둜 λ”œλŸ¬μ˜ μˆ˜μ΅μ„ κ³„μ‚°ν•˜λ„λ‘ μˆ˜μ •
JunHyung1206 Mar 15, 2026
ca9274c
refactor: HitOption μž…λ ₯μ‹œ μ•žλ’€λ‘œ 곡백이 κ°€λŠ₯ν•˜λ„λ‘ μˆ˜μ •
JunHyung1206 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
18 changes: 0 additions & 18 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,6 @@
- [ ] λ―Έμ…˜μ˜ ν•„μˆ˜ μš”κ΅¬μ‚¬ν•­μ„ λͺ¨λ‘ κ΅¬ν˜„ν–ˆλ‚˜μš”?
- [ ] Gradle `test`λ₯Ό μ‹€ν–‰ν–ˆμ„ λ•Œ, λͺ¨λ“  ν…ŒμŠ€νŠΈκ°€ μ •μƒμ μœΌλ‘œ ν†΅κ³Όν–ˆλ‚˜μš”?
- [ ] μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ •μƒμ μœΌλ‘œ μ‹€ν–‰λ˜λ‚˜μš”?
- [ ] [ν”„λ‘€λ‘œκ·Έ](https://prolog.techcourse.co.kr)에 μ…€ν”„ 체크λ₯Ό μž‘μ„±ν–ˆλ‚˜μš”?
- <!-- μž‘μ„±ν•œ μ…€ν”„ 체크의 링크λ₯Ό λ‚¨κ²¨μ£Όμ„Έμš”. -->


## 객체지ν–₯ μƒν™œμ²΄μ‘° μš”κ΅¬μ‚¬ν•­μ„ μ–Όλ§ˆλ‚˜ 잘 μΆ©μ‘±ν–ˆλ‹€κ³  μƒκ°ν•˜μ‹œλ‚˜μš”?

### 1~5점 μ€‘μ—μ„œ μ„ νƒν•΄μ£Όμ„Έμš”.

- [ ] 1 (μ „ν˜€ μΆ©μ‘±ν•˜μ§€ λͺ»ν•¨)
- [ ] 2
- [ ] 3 (보톡)
- [ ] 4
- [ ] 5 (μ™„λ²½ν•˜κ²Œ μΆ©μ‘±)

### μ„ νƒν•œ 점수의 이유λ₯Ό μ μ–΄μ£Όμ„Έμš”.

<!-- 이유 μž‘μ„± -->

Comment on lines -15 to -32

Choose a reason for hiding this comment

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

ν•΄λ‹Ή λ‚΄μš©μ„ μ œκ±°ν•œ μ΄μœ κ°€ κΆκΈˆν•΄μš”.
λͺ‡λͺ‡ λ‹€λ₯Έ 크루듀도 μ œκ±°ν•˜λŠ” λ“― ν•˜λ˜λ°, μ΄μ œλŠ” μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” ν…œν”Œλ¦Ώ λ‚΄μš©μΈκ°€μš”?

Copy link
Author

Choose a reason for hiding this comment

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

μš°ν…Œμ½” κΉƒν—ˆλΈŒ μͺ½μ—μ„œ μΌκ΄„μ μœΌλ‘œ μ œκ±°ν•œ 것 κ°™μŠ΅λ‹ˆλ‹€.


## μ–΄λ–€ 뢀뢄에 μ§‘μ€‘ν•˜μ—¬ 리뷰해야 ν• κΉŒμš”?

Expand Down
138 changes: 102 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,38 +1,93 @@


## λ―Έμ…˜ 쀑 기둝
### Step1
- κ·œμΉ™μ„ μ μš©ν•΄μ„œ λ³€κ²½ν•œ μ½”λ“œ 1κ³³ 이상
- Player ν΄λž˜μŠ€μ— μžˆλŠ” addCard() λ©”μ„œλ“œλ₯Ό κΈ°λŠ₯이 μ•„λ‹Œ λ‚΄λΆ€ 둜직으둜만 μ‚¬μš©ν•΄μ„œ, ν…ŒμŠ€νŠΈμ½”λ“œ μž‘μ„±μ„ ν•˜μ§€ μ•Šμ•˜λŠ”λ°, κΈ°λŠ₯으둜 λ°”λΌλ³΄κ²Œ λ˜λ©΄μ„œ ν•΄λ‹Ή κ΄€λ ¨ μ½”λ“œμ™€ ν…ŒμŠ€νŠΈμ½”λ“œλ₯Ό λͺ¨λ‘ μˆ˜μ •ν•¨
- ν…ŒμŠ€νŠΈ μž‘μ„±μ΄ μ–΄λ €μ› λ˜ μ½”λ“œ 1κ³³ 이상
- 16 μ΄ν•˜μ΄λ©΄ λ”œλŸ¬κ°€ 계속 μΉ΄λ“œλ₯Ό λ°›λŠ” μƒν™©μ—μ„œ, μ™„κ²°λœ μƒνƒœμ˜ λ”œλŸ¬μ˜ μ†νŒ¨λ₯Ό μ μš©ν•΄μ„œ κ³„μ‚°ν•˜κ³  싢은데, μž…μΆœλ ₯ 둜직과 μ„žμ—¬μ„œ ν…ŒμŠ€νŠΈλ₯Ό ν•˜κΈ° μ–΄λ €μ› μŒ.
- GameManagerTest둜 승패 κ³„μ‚°ν•˜λŠ” λ‘œμ§μ„ ν…ŒμŠ€νŠΈ ν•˜λ €κ³  ν–ˆμœΌλ‚˜, GameManagerκ°€ μ•Œμ•„μ•Ό ν•˜λŠ” given이 λ„ˆλ¬΄ λ§Žμ•„μ„œ μž‘μ„±μ΄ μ–΄λ €μ› μŒ.
- λ§‰νžŒ μˆœκ°„ 1회 이상
- μΉ΄λ“œ 생성 κΈ°λŠ₯ 뢀뢄에 λŒ€ν•œ ν…ŒμŠ€νŠΈ μž‘μ„± μ‹œ, μΉ΄λ“œμ˜ μˆ«μžλŠ” A~10, J, Q, Kμ—¬μ•Ό ν•œλ‹€λŠ” 도메인 κ·œμΉ™κΉŒμ§€ ν…ŒμŠ€νŠΈλ₯Ό ν•΄μ•Όν•˜λŠ”μ§€ 의문? β†’ Enum으둜 μ •μ˜ν•˜λ©΄, λ‹Ήμ—°νžˆ λ™μž‘ν•΄μ•Ό 될 λ‚΄μš©μ— λŒ€ν•΄μ„œλŠ” ν…ŒμŠ€νŠΈμ½”λ“œκ°€ ν•„μš”ν•˜μ§€ μ•Šλ‹€λŠ” 생각이 λ“€μ—ˆμŒ

- μΉ΄λ“œ 생성 κΈ°λŠ₯ 뢀뢄에 λŒ€ν•œ ν…ŒμŠ€νŠΈ μž‘μ„± μ‹œ, μΉ΄λ“œμ˜ μˆ«μžλŠ” A~10, J, Q, Kμ—¬μ•Ό ν•œλ‹€λŠ” 도메인 κ·œμΉ™κΉŒμ§€ ν…ŒμŠ€νŠΈλ₯Ό ν•΄μ•Όν•˜λŠ”μ§€ μ˜λ¬Έμ΄μ—ˆλ‹€. Enum으둜 μ •μ˜ν•˜λ©΄, λ‹Ήμ—°νžˆ λ™μž‘ν•΄μ•Ό 될 λ‚΄μš©μ— λŒ€ν•΄μ„œλŠ” ν…ŒμŠ€νŠΈμ½”λ“œκ°€ ν•„μš”ν•˜μ§€ μ•Šλ‹€λŠ” 생각이 λ“€μ—ˆμ—ˆλ‹€.

### Step2
- κΈ°λŠ₯ μΆ”κ°€λ‘œ 인해 μˆ˜μ •ν•œ μœ„μΉ˜ 개수
- InputView, OutputView
- GameController
- GameService
- Player
- Profit
- Money

- 사이클1 λ•Œλ³΄λ‹€ μˆ˜μ • λ²”μœ„κ°€ μ€„μ—ˆλŠ”κ°€/λŠ˜μ—ˆλŠ”κ°€
- μ½”λ“œλ₯Ό μƒμ„±ν–ˆλ˜ μ–‘λ³΄λ‹€λŠ”, μˆ˜μ •μ„ ν•  λ²”μœ„κ°€ κ·Έλ ‡κ²Œ λ§Žμ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. λŒ€λΆ€λΆ„μ˜ 도메인은 기쑴의 μ½”λ“œλ₯Ό κ·ΈλŒ€λ‘œ λ”°λ₯΄κ³  있고, μž…μΆœλ ₯κ³Ό, κ²°κ³Ό 계산을 ν•˜λŠ” λΆ€λΆ„, 그리고 이λ₯Ό ν–‰ν•˜λŠ” 주체 μ •λ„λ§Œ μˆ˜μ •μ„ ν•˜λ©΄ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
- μƒνƒœ νŒ¨ν„΄μ„ 톡해 if문을 쀄이고 λ‹€ν˜•μ„±μ„ ν™œμš©ν•΄ 보고 μ‹Άμ–΄, μ½”λ“œ 흐름 및 점수 λ‘œμ§μ„ λ°”κΎΈκΈ΄ ν–ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ, step1μ—μ„œ step2둜 κΈ°λŠ₯을 변경을 ν•  λ•ŒλŠ” 바뀐 λΉ„μ¦ˆλ‹ˆμŠ€ κ·œμΉ™ μ •λ„λ§Œ λ³€κ²½λ˜λŠ” 것을 확인할 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
- κ·œμΉ™ 적용으둜 λ³€κ²½ν•œ μ½”λ“œ 1κ³³
- 객체의 μ±…μž„ ν• λ‹ΉμœΌλ‘œ 인해 λ³€κ²½λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μˆ˜μ΅μ€ μžμ‹ μ΄ 돈과, 수읡λ₯ μ„ 잘 μ•Œκ³  μžˆμœΌλ―€λ‘œ 수읡 κΈˆμ•‘μ„ 계산할 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό μ›λž˜ λ°–μ—μ„œ 처리λ₯Ό ν•΄μ„œ dto둜 λ°”λ‘œ λ„˜κ²ΌλŠ”λ°, Profitμ—μ„œ κ³„μ‚°ν•˜λ„λ‘ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
- ν…ŒμŠ€νŠΈκ°€ 섀계λ₯Ό λ„μš΄ μˆœκ°„ 1회
- 수읡λ₯  κ³„μ‚°μ—μ„œ μ’€ 더 ν—€λ§€μ§€ μ•Šκ³ , λͺ…ν™•νžˆ ꡬ뢄을 ν•΄μ„œ μ§„ν–‰ν•΄λ³Ό 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
---

## ν† λ‘ μ—μ„œ μ •ν•œ κ·œμΉ™
1. ν…ŒμŠ€νŠΈ λ‹¨μœ„ κΈ°μ€€ - 무엇을 λ‹¨μœ„λ‘œ ν…ŒμŠ€νŠΈν•˜λŠ”κ°€
- λ§Œμ•½ ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•œλ‹€λ©΄ κΈ°λŠ₯ λ‹¨μœ„λ‘œ μž‘μ„±ν•œλ‹€. 이 λ•Œ κΈ°λŠ₯은 ν•œ κ°€μ§€ μ—­ν• λ§Œμ„ λ‹΄λ‹Ήν•œλ‹€.

2. ν…ŒμŠ€νŠΈ μ œμ™Έ κΈ°μ€€ - 무엇을 ν…ŒμŠ€νŠΈν•˜μ§€ μ•ŠλŠ”κ°€
- 인풋&아웃풋과 ν…ŒμŠ€νŠΈ κ°€λŠ₯ν•œ public λ©”μ„œλ“œμ—μ„œ ν™œμš©λ˜λŠ” privateλ©”μ„œλ“œλŠ” ν…ŒμŠ€νŠΈν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.
- λ§Œμ•½ ν…ŒμŠ€νŠΈμ½”λ“œλ₯Ό 톡해 private λ©”μ„œλ“œκ°€ κ²€μ¦λ˜μ§€ μ•ŠλŠ”λ‹€λ©΄ ν•΄λ‹Ή λ©”μ„œλ“œλŠ” κΈ°λŠ₯을 μž¬μ •μ˜ ν•œλ‹€.

3. ν…ŒμŠ€νŠΈ 어렀움 λŒ€μ‘ - ν…ŒμŠ€νŠΈκ°€ μ–΄λ €μš°λ©΄ μ–΄λ–»κ²Œ ν•˜λŠ”κ°€
- ν…ŒμŠ€νŠΈκ°€ μ–΄λ €μšΈ 경우 도메인 섀계λ₯Ό μ κ²€ν•˜κ³  λ©”μ„œλ“œκ°€ 단일 μ±…μž„μΈμ§€ λ‹€μ‹œ κ³ λ €ν•΄λ³Έλ‹€.

4. λ¦¬νŒ©ν„°λ§ μš°μ„ μˆœμœ„ - μ—¬λŸ¬ λ¬Έμ œκ°€ μžˆμ„ λ•Œ 뭘 λ¨Όμ € ν•˜λŠ”κ°€
- μ•„λž˜μ˜ μš°μ„ μˆœμœ„λŒ€λ‘œ λ¦¬νŒ©ν† λ§μ„ μ§„ν–‰ν•œλ‹€.<br>
(1) μ—­ν•  뢄리<br>
(2) 쑰건문 λΆ„κΈ° μΆ•μ†Œ<br>
(3) 쀑볡 둜직 제거<br>
(4) λ©”μ„œλ“œ/λ³€μˆ˜λͺ…(ν…ŒμŠ€νŠΈ 포함) 점검<br>
(5) μƒμˆ˜ν™”

### ν…ŒμŠ€νŠΈ λ‹¨μœ„ κΈ°μ€€ - 무엇을 λ‹¨μœ„λ‘œ ν…ŒμŠ€νŠΈν•˜λŠ”κ°€
λ§Œμ•½ ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•œλ‹€λ©΄ κΈ°λŠ₯ λ‹¨μœ„λ‘œ μž‘μ„±ν•œλ‹€. 이 λ•Œ κΈ°λŠ₯은 ν•œ κ°€μ§€ μ—­ν• λ§Œμ„ λ‹΄λ‹Ήν•œλ‹€.

### ν…ŒμŠ€νŠΈ μ œμ™Έ κΈ°μ€€ - 무엇을 ν…ŒμŠ€νŠΈν•˜μ§€ μ•ŠλŠ”κ°€
인풋&아웃풋과 ν…ŒμŠ€νŠΈ κ°€λŠ₯ν•œ public λ©”μ„œλ“œμ—μ„œ ν™œμš©λ˜λŠ” private λ©”μ„œλ“œλŠ” ν…ŒμŠ€νŠΈν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.
λ§Œμ•½ ν…ŒμŠ€νŠΈμ½”λ“œλ₯Ό 톡해 private λ©”μ„œλ“œκ°€ κ²€μ¦λ˜μ§€ μ•ŠλŠ”λ‹€λ©΄ ν•΄λ‹Ή λ©”μ„œλ“œλŠ” κΈ°λŠ₯을 μž¬μ •μ˜ ν•œλ‹€.

### ν…ŒμŠ€νŠΈ 어렀움 λŒ€μ‘ - ν…ŒμŠ€νŠΈκ°€ μ–΄λ €μš°λ©΄ μ–΄λ–»κ²Œ ν•˜λŠ”κ°€
ν…ŒμŠ€νŠΈκ°€ μ–΄λ €μšΈ 경우 도메인 섀계λ₯Ό μ κ²€ν•˜κ³  λ©”μ„œλ“œκ°€ 단일 μ±…μž„μΈμ§€ λ‹€μ‹œ κ³ λ €ν•΄λ³Έλ‹€.

### λ¦¬νŒ©ν„°λ§ μš°μ„ μˆœμœ„ - μ—¬λŸ¬ λ¬Έμ œκ°€ μžˆμ„ λ•Œ 뭘 λ¨Όμ € ν•˜λŠ”κ°€
μ•„λž˜μ˜ μš°μ„ μˆœμœ„λŒ€λ‘œ λ¦¬νŒ©ν† λ§μ„ μ§„ν–‰ν•œλ‹€.
- μ—­ν•  뢄리
- 쑰건문 λΆ„κΈ° μΆ•μ†Œ
- 쀑볡 둜직 제거
- λ©”μ„œλ“œ/λ³€μˆ˜λͺ…(ν…ŒμŠ€νŠΈ 포함) 점검
- μƒμˆ˜ν™”

### ν…ŒμŠ€νŠΈμ˜ λ²”μœ„μ™€ λŒ€μƒ - 무엇을 ν•΅μ‹¬μœΌλ‘œ κ²€μ¦ν•˜λŠ”κ°€
- ν…ŒμŠ€νŠΈλŠ” κ°œλ³„ λ©”μ„œλ“œκ°€ μ•„λ‹ˆλΌ 객체의 ν–‰μœ„μ™€ ν˜‘λ ₯ 객체 κ°„ λ©”μ‹œμ§€ 흐름을 κΈ°μ€€μœΌλ‘œ μ •μ˜ν•œλ‹€. 즉, "μ–΄λ–€ κ²°κ³Όλ₯Ό λ§Œλ“ λ‹€"보닀 "μ–΄λ–€ μ±…μž„μ„ μˆ˜ν–‰ν•œλ‹€"λ₯Ό κ²€μ¦ν•œλ‹€.
- 랜덀 κ°’, μ‹œκ°„ λ“± μ œμ–΄ν•  수 μ—†λŠ” μš”μ†ŒλŠ” ν…ŒμŠ€νŠΈμ—μ„œ ν†΅μ œ κ°€λŠ₯ν•œ ν˜•νƒœλ‘œ λΆ„λ¦¬ν•œλ‹€.

### 객체의 μ±…μž„ ν• λ‹Ή - λˆ„κ΅¬μ—κ²Œ 역할을 λ§‘κΈΈ 것인가
- κ°μ²΄λŠ” μžμ‹ μ˜ μƒνƒœλ₯Ό 기반으둜 슀슀둜 ν–‰λ™ν•˜λ„λ‘ μ±…μž„μ„ κ°€μ§„λ‹€. 데이터λ₯Ό κΊΌλ‚΄ νŒλ‹¨ν•˜μ§€ 말고 "묻지 말고 μ‹œμΌœλΌ(Tell, Don't Ask)" 원칙을 λ”°λ₯Έλ‹€. 즉, 행동은 ν•΄λ‹Ή 정보λ₯Ό κ°€μž₯ 잘 μ•„λŠ” 객체가 μˆ˜ν–‰ν•œλ‹€.
- 객체가 μ˜¬λ°”λ₯Έ μ±…μž„μ„ κ°€μ‘ŒλŠ”μ§€ μ–΄λ–»κ²Œ μ•„λŠ”κ°€
- 클래슀 μƒλ‹¨μ˜ import 문을 톡해 μ±…μž„ μΉ¨λ²” μ—¬λΆ€λ₯Ό μ κ²€ν•œλ‹€.
- 도메인 객체가 UI, μž…μΆœλ ₯, ν”„λ ˆμž„μ›Œν¬ μ˜μ‘΄μ„±μ„ κ°€μ§€λ©΄ μ±…μž„μ΄ μ„žμΈ μ‹ ν˜Έλ‘œ νŒλ‹¨ν•œλ‹€.
- 일급 μ»¬λ ‰μ…˜μ΄ λ‹΄λ‹Ήν•΄μ•Ό ν•  둜직이 μ™ΈλΆ€ μ„œλΉ„μŠ€λ‚˜ μ»¨νŠΈλ‘€λŸ¬μ— μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”μ§€ ν™•μΈν•œλ‹€.
- 도메인은 항상 도메인 κ·œμΉ™κ³Ό μƒνƒœ κ΄€λ¦¬μ—λ§Œ μ§‘μ€‘ν•˜λ„λ‘ μœ μ§€ν•œλ‹€.

### ν…ŒμŠ€νŠΈμ˜ μ‹€νŒ¨ ν”Όλ“œλ°± - κΉ¨μ§„ ν…ŒμŠ€νŠΈ μ½”λ“œλŠ” 무엇을 μ˜λ―Έν•˜λŠ”κ°€
- λΉ„μ¦ˆλ‹ˆμŠ€ κ·œμΉ™μ΄ λ³€κ²½λ˜μ–΄ ν…ŒμŠ€νŠΈκ°€ κΉ¨μ§€λŠ” κ²½μš°λŠ” κ±΄κ°•ν•œ μ‹€νŒ¨μ΄λ‹€. μ΄λŠ” μ‹œμŠ€ν…œμ˜ κ·œμΉ™μ΄ λ°”λ€Œμ—ˆμŒμ„ μ•Œλ¦¬λŠ” μœ νš¨ν•œ ν”Όλ“œλ°±μ΄λ―€λ‘œ ν…ŒμŠ€νŠΈλ₯Ό ν•¨κ»˜ μˆ˜μ •ν•œλ‹€.
- λ‚΄λΆ€ ꡬ쑰 λ¦¬νŒ©ν„°λ§λ§Œ ν–ˆλŠ”λ° ν…ŒμŠ€νŠΈκ°€ κΉ¨μ§€λ©΄ κ²½κ³ μ„± μ‹€νŒ¨λ‘œ λ³Έλ‹€. 이 경우 ν…ŒμŠ€νŠΈκ°€ κ΅¬ν˜„ 세뢀사항에 κ³Όλ„ν•˜κ²Œ μ˜μ‘΄ν•˜κ³  μžˆλŠ”μ§€ μ κ²€ν•œλ‹€.

### 변경에 μœ μ—°ν•œ ꡬ쑰 - μ–΄λ–»κ²Œ 섀계해야 μ‚¬μ΄λ“œ μ΄νŽ™νŠΈλ₯Ό 쀄일 수 μžˆλŠ”κ°€
- 의미 μžˆλŠ” 값은 μ›μ‹œκ°’ 포μž₯(Value Object)κ³Ό μΌκΈ‰μ»¬λ ‰μ…˜μ„ 톡해 λͺ…ν™•ν•œ κ°œλ…μœΌλ‘œ ν‘œν˜„ν•œλ‹€. VOλŠ” κ΄€λ ¨ κ·œμΉ™κ³Ό 검증을 ν•¨κ»˜ κ°€μ§€λ©° 응집도λ₯Ό 높이기 λ•Œλ¬Έμ΄λ‹€.
- κ°μ²΄λŠ” μƒνƒœμ™€ 행동을 ν•¨κ»˜ 숨기고 μ™ΈλΆ€μ—μ„œ 직접 μƒνƒœλ₯Ό λ³€κ²½ν•  수 없도둝 μΊ‘μŠν™”ν•œλ‹€. 이λ₯Ό 톡해 객체 κ°„ μ˜μ‘΄μ„ 쀄이고 λ³€κ²½ μ‹œ λ°œμƒν•˜λŠ” μ‚¬μ΄λ“œ μ΄νŽ™νŠΈλ₯Ό μ΅œμ†Œν™”ν•œλ‹€.
- μΌκΈ‰μ»¬λ ‰μ…˜μ„ μ‚¬μš©ν•˜μ—¬ μ™ΈλΆ€μ—μ„œ μ»¬λ ‰μ…˜μ„ μž„μ˜λ‘œ μ‘°μž‘ν•˜μ§€ λͺ»ν•˜λ„둝 막고 λΆˆλ³€μ„±μ„ 보μž₯ν•˜μ—¬, μ‹œμŠ€ν…œ μ „λ°˜μ˜ μ•ˆμ •μ„±μ„ 높인닀.

---
## κΈ°λŠ₯ μ‹œλ‚˜λ¦¬μ˜€
1. λ”œλŸ¬μ™€ ν”Œλ ˆμ΄μ–΄λ₯Ό μƒμ„±ν•œλ‹€.
1. ν”Œλ ˆμ΄μ–΄μ˜ 이름을 μž…λ ₯λ°›λŠ”λ‹€.
2. ν”Œλ ˆμ΄μ–΄λŠ” κΈˆμ•‘μ„ λ² νŒ…ν•œλ‹€.
3. ν”Œλ ˆμ΄μ–΄μ—κ²Œ μΉ΄λ“œλ₯Ό 2μž₯μ”© λ‚˜λˆ„μ–΄μ€€λ‹€. μ΄λ•Œ λ”œλŸ¬λ„ λ°›μ•„μ•Όν•œλ‹€.
4. λ”œλŸ¬κ°€ λΈ”λž™μž­μΈ 경우 κ·Έ μ¦‰μ‹œ ν”Œλ ˆμ΄λ₯Ό λ©ˆμΆ”κ³  점수λ₯Ό κ³„μ‚°ν•œλ‹€.
5. λ”œλŸ¬κ°€ λΈ”λž™μž­μ΄ μ•„λ‹Œ 경우 정상 νλ¦„μœΌλ‘œ κ²Œμž„μ΄ μ§„ν–‰λœλ‹€.
6. 각 ν”Œλ ˆμ΄μ–΄λŠ” λ²„μŠ€νŠΈκ°€ λ˜μ§€ μ•ŠλŠ” ν•œ 계속 뽑을 수 μžˆλ‹€.
1. μ΄λ•Œ 히트 μ˜΅μ…˜μ„ λ°›λŠ” μž‘μ—…μ„ 계속 μˆ˜ν–‰ν•΄μ•Όν•˜λ©°, μ†νŒ¨μ˜ 점수λ₯Ό 좜λ ₯ν•œλ‹€.
7. λ”œλŸ¬λŠ” 16μ΄ν•˜μΈ 경우 계속 νžˆνŠΈν•œλ‹€.
8. κ²°κ³Ό 값을 좜λ ₯ν•œλ‹€.
1. λ”œλŸ¬μ˜ μˆ˜μ΅μ„ κ³„μ‚°ν•œλ‹€.
2. ν”Œλ ˆμ΄μ–΄μ˜ μˆ˜μ΅μ„ κ³„μ‚°ν•œλ‹€.

---
## κ΅¬ν˜„ν•  κΈ°λŠ₯ λͺ©λ‘
### κΈ°λ³Έ μž…μΆœλ ₯
- [x] κ²Œμž„μ— μ°Έμ—¬ν•  이름 μž…λ ₯λ°›λŠ”λ‹€.
- [x] κ²Œμž„μ— μ°Έμ—¬ν•  이름을 μž…λ ₯λ°›λŠ”λ‹€.
- [x] ν”Œλ ˆμ΄μ–΄ λ‹Ή λ² νŒ… κΈˆμ•‘μ„ μž…λ ₯λ°›λŠ”λ‹€.
- [x] ν•œ μž₯의 μΉ΄λ“œλ₯Ό μΆ”κ°€λ‘œ 받을지 μ—¬λΆ€λ₯Ό μž…λ ₯λ°›λŠ”λ‹€.
- [x] ν”Œλ ˆμ΄μ–΄μ˜ ν˜„μž¬ 보유 μΉ΄λ“œλ₯Ό 좜λ ₯ν•œλ‹€.
- [x] κ²Œμž„μ˜ 진행상황을 좜λ ₯ν•œλ‹€.
Expand All @@ -48,6 +103,7 @@
- [x] μΉ΄λ“œλ₯Ό λ°›λŠ”λ‹€.
- [x] μ΄ˆκΈ°μ— μΉ΄λ“œ 2μž₯을 λ°›λŠ”λ‹€.
- [x] λ²„μŠ€νŠΈκ°€ λ˜μ§€ μ•Šμ€ 경우 μ›ν•œλ‹€λ©΄ μ–Όλ§ˆλ“ μ§€ μΉ΄λ“œλ₯Ό 계속 뽑을 수 μžˆλ‹€.
- [x] λ² νŒ…μ„ ν•œλ‹€.

### λ”œλŸ¬
- [x] μΉ΄λ“œλ₯Ό λ°›λŠ”λ‹€.
Expand All @@ -58,15 +114,19 @@
- [x] μΉ΄λ“œμ˜ 숫자 계산은 μΉ΄λ“œ 숫자λ₯Ό 기본으둜 ν•œλ‹€.
- [x] King, Queen, Jack은 각각 10으둜 κ³„μ‚°ν•œλ‹€.
- [x] μ˜ˆμ™Έλ‘œ AceλŠ” 1 λ˜λŠ” 11을 μœ λ¦¬ν•œλŒ€λ‘œ κ³„μ‚°ν•œλ‹€.
- [x] Aceλ₯Ό 11둜 κ³„μ‚°ν•˜κ³ , μΉ΄λ“œμ˜ 합이 21을 μ΄ˆκ³Όν•˜λ©΄ 10을 λΊ€λ‹€.
- [x] Aceλ₯Ό 11둜 κ³„μ‚°ν•˜κ³ , μΉ΄λ“œμ˜ 합이 21을 μ΄ˆκ³Όν•˜λ©΄ 10을 λΊ€λ‹€.

### λ²„μŠ€νŠΈλ₯Ό νŒμ •ν•œλ‹€.
### ν•Έλ“œλ₯Ό νŒμ •ν•œλ‹€.
- [x] μΉ΄λ“œμ˜ 합계가 21이고 μΉ΄λ“œμ˜ μž₯μˆ˜κ°€ 2μž₯이면 λΈ”λž™μž­μ΄λ‹€.
- [x] μΉ΄λ“œμ˜ 합계가 21을 μ΄ˆκ³Όν•˜λ©΄ λ²„μŠ€νŠΈλ‹€.

### 승패λ₯Ό κ³„μ‚°ν•œλ‹€.
- [x] κ²Œμž„μ„ μ™„λ£Œν•œ ν›„ 각 ν”Œλ ˆμ΄μ–΄λ³„λ‘œ 총 점수λ₯Ό 좜λ ₯ν•œλ‹€.
- [x] λ²„μŠ€νŠΈμΌ 경우, λ²„μŠ€νŠΈλ‘œ 좜λ ₯ν•œλ‹€.
- [x] κ²Œμž„μ„ μ™„λ£Œν•œ ν›„ 각 ν”Œλ ˆμ΄μ–΄λ³„λ‘œ 승패λ₯Ό 좜λ ₯ν•œλ‹€.

### λ² νŒ… κ²°κ³Όλ₯Ό κ³„μ‚°ν•œλ‹€.
- [x] κ²Œμž„μ„ μ™„λ£Œν•œ ν›„ 각 ν”Œλ ˆμ΄μ–΄λ³„λ‘œ κ²°κ³Ό 별 μˆ˜μ΅μ„ 좜λ ₯ν•˜μ—¬μ•Όν•œλ‹€.
- [x] μΉ΄λ“œλ₯Ό μΆ”κ°€λ‘œ 뽑아 21을 μ΄ˆκ³Όν•  경우 λ°°νŒ… κΈˆμ•‘μ„ λͺ¨λ‘ μžƒκ²Œ λœλ‹€.
- [x] λ”œλŸ¬μ˜ μˆ˜μ΅μ„ κ³„μ‚°ν•œλ‹€.

---

Expand All @@ -75,8 +135,14 @@
κ²Œμž„μ— μ°Έμ—¬ν•  μ‚¬λžŒμ˜ 이름을 μž…λ ₯ν•˜μ„Έμš”.(μ‰Όν‘œ κΈ°μ€€μœΌλ‘œ 뢄리)
pobi,jason

pobi의 λ°°νŒ… κΈˆμ•‘μ€?
10000

jason의 λ°°νŒ… κΈˆμ•‘μ€?
20000

λ”œλŸ¬μ™€ pobi, jasonμ—κ²Œ 2μž₯을 λ‚˜λˆ„μ—ˆμŠ΅λ‹ˆλ‹€.
λ”œλŸ¬μΉ΄λ“œ: 3닀이아λͺ¬λ“œ
λ”œλŸ¬: 3닀이아λͺ¬λ“œ
pobiμΉ΄λ“œ: 2ν•˜νŠΈ, 8μŠ€νŽ˜μ΄λ“œ
jasonμΉ΄λ“œ: 7ν΄λ‘œλ²„, KμŠ€νŽ˜μ΄λ“œ

Expand All @@ -85,26 +151,26 @@ 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
```

## **ν”„λ‘œκ·Έλž˜λ° μš”κ΅¬ 사항**
- [x] μžλ°” μ½”λ“œ μ»¨λ²€μ…˜μ„ μ§€ν‚€λ©΄μ„œ ν”„λ‘œκ·Έλž˜λ°ν•œλ‹€.
- [ ] 기본적으둜 [Java Style Guide](https://github.com/woowacourse/woowacourse-docs/tree/master/styleguide/java)을 μ›μΉ™μœΌλ‘œ ν•œλ‹€.
- [x] 기본적으둜 [Java Style Guide](https://github.com/woowacourse/woowacourse-docs/tree/master/styleguide/java)을 μ›μΉ™μœΌλ‘œ ν•œλ‹€.
- [ ] indent(인덴트, λ“€μ—¬μ“°κΈ°) depthλ₯Ό 2λ₯Ό λ„˜μ§€ μ•Šλ„λ‘ κ΅¬ν˜„ν•œλ‹€. 1κΉŒμ§€λ§Œ ν—ˆμš©ν•œλ‹€.
- [ ] 예λ₯Ό λ“€μ–΄ whileλ¬Έ μ•ˆμ— if문이 있으면 λ“€μ—¬μ“°κΈ°λŠ” 2이닀.
- [ ] 힌트: indent(인덴트, λ“€μ—¬μ“°κΈ°) depthλ₯Ό μ€„μ΄λŠ” 쒋은 방법은 ν•¨μˆ˜(λ˜λŠ” λ©”μ„œλ“œ)λ₯Ό λΆ„λ¦¬ν•˜λ©΄ λœλ‹€.
Expand All @@ -113,14 +179,14 @@ jason: 패
- [x] else μ˜ˆμ•½μ–΄λ₯Ό μ“°μ§€ 말라고 ν•˜λ‹ˆ switch/case둜 κ΅¬ν˜„ν•˜λŠ” κ²½μš°κ°€ μžˆλŠ”λ° switch/case도 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
- [x] 힌트: ifλ¬Έμ—μ„œ 값을 λ°˜ν™˜ν•˜λŠ” λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ν•˜λ©΄ else μ˜ˆμ•½μ–΄λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.
- [x] λͺ¨λ“  κΈ°λŠ₯을 TDD둜 κ΅¬ν˜„ν•΄ λ‹¨μœ„ ν…ŒμŠ€νŠΈκ°€ μ‘΄μž¬ν•΄μ•Ό ν•œλ‹€. 단, UI(System.out, System.in) λ‘œμ§μ€ μ œμ™Έ
- [ ] 핡심 λ‘œμ§μ„ κ΅¬ν˜„ν•˜λŠ” μ½”λ“œμ™€ UIλ₯Ό λ‹΄λ‹Ήν•˜λŠ” λ‘œμ§μ„ κ΅¬λΆ„ν•œλ‹€.
- [x] 핡심 λ‘œμ§μ„ κ΅¬ν˜„ν•˜λŠ” μ½”λ“œμ™€ UIλ₯Ό λ‹΄λ‹Ήν•˜λŠ” λ‘œμ§μ„ κ΅¬λΆ„ν•œλ‹€.
- [x] UI λ‘œμ§μ„ InputView, ResultView와 같은 클래슀λ₯Ό μΆ”κ°€ν•΄ λΆ„λ¦¬ν•œλ‹€.
- [ ] ν•¨μˆ˜(λ˜λŠ” λ©”μ„œλ“œ)의 길이가 10라인을 λ„˜μ–΄κ°€μ§€ μ•Šλ„λ‘ κ΅¬ν˜„ν•œλ‹€.
- [ ] ν•¨μˆ˜(λ˜λŠ” λ©”μ†Œλ“œ)κ°€ ν•œ κ°€μ§€ 일만 ν•˜λ„λ‘ μ΅œλŒ€ν•œ μž‘κ²Œ λ§Œλ“€μ–΄λΌ.
- [x] λ°°μ—΄ λŒ€μ‹  μ»¬λ ‰μ…˜μ„ μ‚¬μš©ν•œλ‹€.
- [ ] λͺ¨λ“  μ›μ‹œ κ°’κ³Ό λ¬Έμžμ—΄μ„ 포μž₯ν•œλ‹€.
- [x] 쀄여 μ“°μ§€ μ•ŠλŠ”λ‹€(μΆ•μ•½ κΈˆμ§€).
- [ ] 일급 μ»¬λ ‰μ…˜μ„ μ“΄λ‹€.
- [x] 일급 μ»¬λ ‰μ…˜μ„ μ“΄λ‹€.

### **μΆ”κ°€λœ μš”κ΅¬ 사항**
- [x] λͺ¨λ“  μ—”ν‹°ν‹°λ₯Ό μž‘κ²Œ μœ μ§€ν•œλ‹€.
Expand Down
75 changes: 61 additions & 14 deletions src/main/java/controller/GameController.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package controller;

Choose a reason for hiding this comment

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

이번 PR은 κΈ°λŠ₯ μΆ”κ°€ 규λͺ¨μ— λΉ„ν•΄ commit μˆ˜κ°€ ꡉμž₯히 λ§Žμ€ νŽΈμ΄λ„€μš”.
그리고 컀밋 흐름이 쑰금 λ³΅μž‘ν•˜κ²Œ μ–½ν˜€μžˆμ–΄μš”.

ν•™μŠ΅ν•΄λ³΄λ©΄μ„œ, λ˜λŠ” 이것 저것 도전해보며 λ‹€μ–‘ν•œ μ‹œλ„λ₯Ό ν•΄λ³΄λŠ” 것은 μ’‹μ•„μš”.
ν•˜μ§€λ§Œ μž‘μ—…μ„ repository에 반영 ν•  λ•ŒλŠ”, commit 을 μ •λ¦¬ν•˜κ±°λ‚˜ κΌ­ ν•„μš”ν•œ κ²ƒλ“€λ§Œ 남기면 μ’‹κ² μ–΄μš”.

μ΄λ ‡κ²Œ μƒκ°ν•˜λŠ” μ΄μœ λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€ :

  • 리뷰어가 commit λ‹¨μœ„λ‘œ 무언가λ₯Ό ν™•μΈν•˜λ €κ³  ν•  λ•Œ, λ„ˆλ¬΄λ‚˜λ„ λ§Žμ€ μ‹œκ°„μ„ νˆ¬μžν•΄μ•Ό ν•΄μš”.
  • squash merge κ°€ μ•„λ‹ˆλΌλ©΄, μ΅œμ’… μ½”λ“œλ² μ΄μŠ€μ˜ git history에 이 λ§Žμ€ 컀밋듀이 κ·ΈλŒ€λ‘œ μ μš©λΌμš”.
  • λ‚˜μ€‘μ— 둀백을 ν•˜κ±°λ‚˜, κΈ°λŠ₯ λ‹¨μœ„λ‘œ 배포 ν•  것듀을 κ²°μ •ν•  λ•Œ μ•žμ„œ λ§ν•œ μ‹œκ°„ 투자λ₯Ό λ˜‘κ°™μ΄ ν•΄μ•Όν•˜λŠ” 일이 λ°œμƒν•΄μš”. 컀밋을 λˆ„λ½ν•΄μ„œ λ¬Έμ œκ°€ λ°œμƒν•  κ°€λŠ₯성도 ꡉμž₯히 λ†’μ•„μ§€κ³ μš”.
  • 객체지ν–₯, ν…ŒμŠ€νŠΈμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ git 컀밋 관리도 ꡉμž₯히 μ€‘μš”ν•œ μ—­λŸ‰ 쀑 ν•˜λ‚˜μ˜ˆμš”.

λ¬Όλ‘  μ–΄λ–€ ν”„λ‘œμ νŠΈμΈμ§€μ— 따라, λ˜λŠ” νŒ€ μ»¨λ²€μ…˜μ— 따라 컀밋 관리λ₯Ό 그리 μ€‘μš”ν•˜κ²Œ μƒκ°ν•˜μ§€ μ•Šμ„ λ•Œλ„ μžˆμ–΄μš”. ν•˜μ§€λ§Œ 이 참에 git 이 μ œκ³΅ν•˜λŠ” κΈ°λŠ₯에 λŒ€ν•΄ μ•Œμ•„λ³΄κ³ , κΌ­ ν•„μš”ν•œ κ²ƒλ“€λ§Œ λ‹΄μ•„μ„œ 컀밋 기둝을 잘 μŒ“μ•„λ³΄λŠ” κ²½ν—˜μ„ 해보면 쒋을 것 κ°™λ„€μš” :)

Choose a reason for hiding this comment

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

μΆ”κ°€λ‘œ, e8f7aa8 의 λ©”μ‹œμ§€λŠ” betting -> batting μ˜€νƒˆμž μˆ˜μ •μ΄λΌκ³  μ ν˜€ μžˆλŠ”λ°,
μ‹€μ œ 변경은 였히렀 batting을 betting으둜 λ˜λŒλ¦¬λŠ” μͺ½μ— 더 κ°€κΉλ„€μš”.
(그리고 λ°‘μ—μ„œλ„ μ–˜κΈ°ν•˜κ² μ§€λ§Œ, git 흐름이 λ³΅μž‘ν•˜κ²Œ κΌ¬μ΄λ©΄μ„œ ν•΄λ‹Ή 컀밋이 λ°˜μ˜λ˜μ§€ μ•Šμ•˜μ–΄μš”.)

그리고 fix: final둜 μˆ˜μ • 같은 λ©”μ‹œμ§€λŠ” μ§€κΈˆ λ‹Ήμž₯은 μ“°κΈ° νŽΈν•˜μ§€λ§Œ,
λ‚˜μ€‘μ— νžˆμŠ€ν† λ¦¬λ₯Ό λ‹€μ‹œ λ³Ό λ•ŒλŠ” 'μ–΄λ”” final 을 μ–΄λ–»κ²Œ μˆ˜μ •ν–ˆλ‹€λŠ”κ±°μ§€?' λΌλŠ” 생각이 λ“€μ–΄μ„œ 거의 정보λ₯Ό μ£Όμ§€ λͺ»ν•˜λ”λΌκ΅¬μš”.

컀밋 λ©”μ‹œμ§€λ₯Ό μ˜λ„μ— 맞게 잘 μž‘μ„±ν•΄λ³΄μ£  :)

Choose a reason for hiding this comment

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

νŒμ„ λ“œλ¦¬μžλ©΄,

이런 νžˆμŠ€ν† λ¦¬ μ •λ¦¬λŠ” git κΈ°λŠ₯을 쑰금만 μ΅ν˜€λ„ 체감이 ν™• λ‹¬λΌμ Έμš”.

μ§€κΈˆ λ‹¨κ³„μ—μ„œλŠ” git rebase -i μ •λ„λ§Œ μ•Œμ•„λ„ commit μˆœμ„œ λ³€κ²½, squash, λ©”μ‹œμ§€ μˆ˜μ •μ΄ κ°€λŠ₯ν•˜κ³ ,
git cherry-pick은 ν•„μš”ν•œ commit만 λ‹€λ₯Έ 브랜치둜 κ°€μ Έμ˜¬ λ•Œ μœ μš©ν•΄μš”.

μš°μ„  이 두 κ°€μ§€λΆ€ν„° κ°€λ³κ²Œ ν•™μŠ΅ν•΄λ³΄λ©΄ λ‹€μŒ PR이 훨씬 κΉ”λ”ν•΄μ§ˆ κ±°μ˜ˆμš”. 특히 rebase λ₯Ό ν™œμš©ν•œ git 관리 μ—°μŠ΅μ„ μ‘°κΈˆμ”© ν•΄λ³΄μ‹œλ©΄ 쒋을 λ“― ν•˜λ„€μš”. :)

Copy link
Author

@JunHyung1206 JunHyung1206 Mar 15, 2026

Choose a reason for hiding this comment

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

μ²˜μŒμ— 쑰금만 변경해도 컀밋을 ν•˜λΌκ³  ν•΄μ›Œμ„œ μŠ΅κ΄€μ μœΌλ‘œ ν–ˆμ—ˆμŠ΅λ‹ˆλ‹€. λ¦¬λ·°ν•˜λŠ” μž…μž₯μ—μ„œλŠ” 이 과정이 맀우 ν”Όκ³€ν•  수 μžˆκ² λ‹€λΌλŠ” 생각이 λ“­λ‹ˆλ‹€. 그리고 revertλ₯Ό μ‚¬μš©μ„ ν–ˆλ‹€λ©΄, μ΄λŸ¬ν•œ 과정이 μ’€ 더 정리가 λ˜μ—ˆμ„ 것 κ°™μŠ΅λ‹ˆλ‹€.
μ’€ 더 κΈ°λŠ₯ λ‹¨μœ„λ‘œ λ¬Άμ–΄μ„œ 진행을 ν•˜κ³  컀밋 λ©”μ‹œμ§€λ„ μ’€ 더 μžμ„Ένžˆ μ λŠ” 것을 λͺ©ν‘œλ‘œ ν•΄μ•Όκ² μŠ΅λ‹ˆλ‹€.

그리고 μ˜€νƒˆμž μˆ˜μ • 같은 경우 ν‘Έμ‹œλ₯Ό ν•œ ν›„ λ’€λŠ¦κ²Œ λ°œκ²¬μ„ ν•΄μ„œ κ³ μΉ˜λŠ” 것이 νž˜λ“€μ—ˆμŠ΅λ‹ˆλ‹€. μ•žμœΌλ‘œ, 컀밋 ν•  λ•Œλ„ λ©”μ‹œμ§€λ₯Ό 꼼꼼히 ν™•μΈν•˜κ³ , 사싀 λ³Έλ¬Έ λ‚΄μš©λ„ 같이 μ μ–΄μ•Όν•˜λŠ”λ°, κ·Έλƒ₯ 제λͺ©λ§Œ μ§“κ³  λ„˜κ²¨λ²„λ¦¬μž, ν–ˆλ˜ 뢀뢄이 λ°˜μ„±ν•˜κ²Œ λ©λ‹ˆλ‹€. λ¦¬λ·°λ°›μ•˜λ˜ μˆœκ°„λΆ€ν„° 고쳐보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

rebaseλŠ” κΈ°λŠ₯을 μ•Œκ³ λŠ” μžˆλŠ”λ°, 3-way mergeλ₯Ό ν•  λ•Œ, μΆ©λŒμ„ 해결을 잘 λͺ»ν•˜λ©΄ μ–΄λ–‘ν•˜μ§€, μ΄μ „μœΌλ‘œ λŒμ•„κ°€κΈ° νž˜λ“€ 것 같은데? λΌλŠ” 생각을 κ°€μ§€κ²Œ λ˜μ–΄μ„œ, 일반 merge둜 μŠ΅κ΄€μ„ λ“€μ˜€μ—ˆμŠ΅λ‹ˆλ‹€. μ’€ 더 깊게 곡뢀λ₯Ό ν•΄μ•Όν•  것 κ°™μŠ΅λ‹ˆλ‹€.
λ‹€μŒ μ£Ό ν…Œμ½”ν†‘ 주제둜 기초 κΉƒλͺ…λ Ήμ–΄λ‘œ 선정을 ν•˜κΈ΄ ν–ˆμ§€λ§Œ, appendix λŠλ‚ŒμœΌλ‘œ μΆ”κ°€ν•  μ˜ˆμ •μž…λ‹ˆλ‹€.
μžμ„Ένžˆ 곡뢀할 λͺ…λ Ήμ–΄ : rebase, cherry-pick, revert


import domain.Players;
import domain.participant.Players;
import domain.betting.Money;
import domain.participant.Dealer;
import domain.participant.Player;
import dto.PlayerHandDto;
import service.BettingCalculateService;
import service.GameService;
import util.HitOption;
import util.InputHitOptionParser;
import util.InputBettingParser;
import view.InputView;
import view.OutputView;

Expand All @@ -19,13 +23,20 @@ public GameController(InputView inputView, OutputView outputView) {

public void run() {
Players players = inputPlayers();
GameService gameService = new GameService(players);
Dealer dealer = new Dealer();
GameService gameService = new GameService(players, dealer);
BettingCalculateService bettingCalculateService = new BettingCalculateService(players, dealer);

playerBetting(players);
outputView.printStartGame(gameService.startGame());

processGame(gameService);
boolean dealerIsBlackJack = processDealerBlackJack(gameService);
if (!dealerIsBlackJack) {
processGame(gameService);
}

outputView.printScore(gameService.getTotalScore());
outputView.printResults(gameService.calculateResults());
outputView.printBettingResults(bettingCalculateService.getBettingResult());
}

private Players inputPlayers() {
Expand All @@ -34,7 +45,7 @@ private Players inputPlayers() {
String rawPlayerNames = inputView.readPlayerNames();
return Players.fromString(rawPlayerNames);
} catch (IllegalArgumentException exception) {
outputView.printErrorMessage(exception.getMessage());
outputView.printInputErrorMessage(exception.getMessage());
}
}
}
Expand All @@ -43,9 +54,20 @@ private HitOption inputHitOption(Player player) {
while (true) {
try {
String rawHitOption = inputView.readHitOption(player.getName());
return InputHitOptionParser.parseHitOption(rawHitOption);
return HitOption.of(rawHitOption);
} catch (IllegalArgumentException exception) {
outputView.printInputErrorMessage(exception.getMessage());
}
}
}

private Money inputBettingMoney(Player player) {
while (true) {
try {
String rawBettingMoney = inputView.readBetting(player.getName());
return InputBettingParser.parseBettingMoney(rawBettingMoney);
} catch (IllegalArgumentException exception) {
outputView.printErrorMessage(exception.getMessage());
outputView.printInputErrorMessage(exception.getMessage());
}
}
}
Expand All @@ -57,19 +79,44 @@ private void processGame(GameService gameService) {
dealerTurn(gameService);
}

private boolean processDealerBlackJack(GameService gameService) {
Dealer dealer = gameService.getDealer();
if (dealer.isBlackJack()) {
gameService.endGameImmediately();
outputView.printDealerBlackJack();
return true;
}
return false;
}

private void playerTurn(Player player, GameService gameService) {
while (!player.isBust() && inputHitOption(player) == HitOption.YES) {
outputView.printHandCard(gameService.playerHit(player));
while (player.isRunning() && inputHitOption(player) == HitOption.YES) {
gameService.hit(player);
outputView.printHandCard(PlayerHandDto.from(player));
}
if (!player.isBust()) {
outputView.printHandCard(gameService.getCurrentHand(player));

if (player.isRunning()) {
gameService.stay(player);
outputView.printHandCard(PlayerHandDto.from(player));
}
}

private void dealerTurn(GameService gameService) {
while (gameService.getDealer().isReceiveCard()) {
gameService.dealerHit();
Dealer dealer = gameService.getDealer();

while (dealer.isReceiveCard()) {
gameService.hit(dealer);
outputView.printDealerReceiveCard();
}

if (dealer.isRunning()) {
gameService.stay(dealer);
}
}

private void playerBetting(Players players) {
for (Player player : players) {
player.bettingMoney(inputBettingMoney(player));
}
}
}
8 changes: 8 additions & 0 deletions src/main/java/domain/BlackJackInfo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package domain;

public final class BlackJackInfo {
public static final int BLACKJACK_SCORE = 21;
public static final int SOFT_HAND_PROCESS_SCORE = 10;
public static final int DEALER_THRESHOLD_SCORE = 16;
public static final int FIRST_CARD_COUNT = 2;
}
Loading