[๐ ์ฌ์ดํด2 - ๋ฏธ์ (๋ธ๋์ญ ๋ฒ ํ )] ๋๋ฌด ๋ฏธ์ ์ ์ถํฉ๋๋ค.#1137
[๐ ์ฌ์ดํด2 - ๋ฏธ์
(๋ธ๋์ญ ๋ฒ ํ
)] ๋๋ฌด ๋ฏธ์
์ ์ถํฉ๋๋ค.#1137Choi-JJunho merged 35 commits intowoowacourse:symfleefrom
Conversation
kang-hyungu
left a comment
There was a problem hiding this comment.
๋๋ฌด ๋ช ๊ฐ์ง ํผ๋๋ฐฑ ๋จ๊ฒผ์ด์
ํ์ธํด๋ณด์๊ณ ๊ถ๊ธํ ์ ์์ผ๋ฉด ์ง๋ฌธ์ฃผ์ธ์~
| @@ -28,17 +37,64 @@ public GameController(InputView inputView, OutputView outputView, GameManager ma | |||
| public void run() { | |||
There was a problem hiding this comment.
ํด๋์ค๋ช ์ ์ปจํธ๋กค๋ฌ๋ผ๊ณ ๋ถ์ธ ์ด์ ๊ฐ ๋ญ๊ฐ์?
|
|
||
| private void readyPhase(Dealer dealer, Players players) { | ||
| gameManager.dealStartingCards(dealer); | ||
| gameManager.dealCardTo(players, 2); |
There was a problem hiding this comment.
2๊ฐ ๋ญ ์๋ฏธํ์ฃ ? ์์๋ก ์ถ์ถํด์ ์๋ฏธ ์๋ ์ด๋ฆ์ ๋ถ์ฌํด์ฃผ์ธ์
๋ค๋ฅธ ํ์์ด ์ฝ๋๋ฅผ ๋ณด๊ณ ๋ฌด์์ ์๋ฏธํ๋์ง ๋ฐ๋ก ํ์
ํ ์ ์๊ฒ ํ์ธ์
There was a problem hiding this comment.
๋ต
INITIAL_CARD_COUNT ๋ผ๋ ์ด๋ฆ์ ๋ถ์ฌํ๋๋ก ์์ ํ์ต๋๋ค.
| gameManager.dealStartingCards(dealer); | ||
| gameManager.dealCardTo(players, 2); | ||
|
|
||
| Map<String, CardsSnapshot> result = new LinkedHashMap<>(); |
There was a problem hiding this comment.
๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฐ์ฒด๋ฅผ ์๋ก ์ถ๊ฐํด์ ๊ทธ ๊ฐ์ฒด์๊ฒ ์ด ์์ ์ ๋งก๊ธฐ๋ ๊ฒ๋ ๊ด์ฐฎ๊ฒ ๋ค์
| outputView.printInitialDealingResult(initialDealingResult); | ||
| } | ||
|
|
||
| private void resultPhase(Dealer dealer, Players players) { |
There was a problem hiding this comment.
์ด ์ฝ๋๋ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฐ์ฒด์์ ์ฒ๋ฆฌํด๋ ๋์ง ์์๊น์?
์ง๊ธ ๊ฐ์ ๊ตฌ์กฐ๋ผ๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ค๋ฃจ๋ ๋ก์ง์ ๋ค๋ฅธ ์ฝ๋์์๋ ์ฌ์ฌ์ฉ์ ๋ชปํ๊ฒ ๋ค์
| this.value = value; | ||
| } | ||
|
|
||
| public static BettingAmount of(int value) { |
There was a problem hiding this comment.
ํฉํฐ๋ฆฌ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ ์ด์ ๊ฐ ๋ญ๊ฐ์?
There was a problem hiding this comment.
์์งํ๊ฒ ๋ง์๋๋ฆฌ๋ฉด, ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋์ ๋ํด ํ์ตํ๊ณ ์ ์ฉํ๋ ๊ฒ์ ์๋์์ต๋๋ค. ๋จ์ํ '์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๊ฐ ์ผ๋ฐ ์์ฑ์๋ณด๋ค ์๋๋ฅผ ๋ช ํํ ์ ๋ฌํ๊ณ ๊ฐ๋ ์ฑ์ ๋์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ์ฐ์ ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค' ์ ๋๋ก๋ง ์๊ฒ ์๊ณ ๊ธฐ๊ณ์ ์ผ๋ก ์ ์ฉํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์์๋ณด๊ณ ๋๋, ํด๋น ํด๋์ค์ฒ๋ผ ํ๋ผ๋ฏธํฐ๊ฐ ํ๋๋ฟ์ด๊ณ ์์ฑ๊ณผ์ ์ด ๋จ์ํ ํด๋์ค์์๋ ํฉํ ๋ฆฌ ๋ฉ์๋๊ฐ ์ฃผ๋ ์ด์ ์ด ์ฌ์ค์ ์๋ค๋ ๊ฒ์ ๋๊ผ์ต๋๋ค. ์คํ๋ ค ํฉํ ๋ฆฌ ๋ฉ์๋๋ก ์์ฑ์๋ฅผ ๋ถํ์ํ๊ฒ ํ ๋ฒ ๋ ๊ฐ์ธ ์ฝ๋๊ฐ ๋์ด๋ฌ๋ค๊ณ ์๊ฐ๋ฉ๋๋ค.
| return new BettingTable(bettingTable); | ||
| } | ||
|
|
||
| public void add(PlayerBetting playerBetting) { |
There was a problem hiding this comment.
ํจ์๋ช ์ add ๋ณด๋ค ๊ฒ์ ์ฉ์ด๋ก ์ ์ฉํด๋ณด๋ฉด ์ด๋จ๊น์?
There was a problem hiding this comment.
๊ฒ์์์ ๋ฒ ํ
ํ ๋ ์ฌ์ฉํ๋ ํํ์ธ 'place a bet'์์ ๋ฉ์๋๋ช
์ place๋ก ์์ ํด ๋ณด์์ต๋๋ค.
์ธ๋ถ์ placeBet์ด๋ผ๋ ๋ฉ์๋ ์์์ bettingTable.place(playerBet) ํํ๋ก ํธ์ถํ๊ฒ ๋๋๋ฐ ์ด๋ฌํ ๋ค์ด๋ฐ์ด ์ ์ ํ ๊น์?
| } | ||
|
|
||
| private int calculateDealerProfit(List<PlayerProfitResult> playersProfitResult) { | ||
| return (-1) * playersProfitResult.stream() |
There was a problem hiding this comment.
๋๋ฌ์ ์์ต์ ํ๋ ์ด์ด๋ค ์์ต ํฉ์ ๋ฐ๋๋ผ๋ ์ ์ ์ง๊ด์ ์ผ๋ก ๋ํ๋ด๊ณ ์ถ์์ต๋๋ค.
์ฒ์์ - ๊ธฐํธ๋ง ๋ถ์ด๋ ๊ฒ๋ณด๋ค ๋ณด๋ค ๋ช
์์ ์ผ๋ก ๋ณด์ด๋๋ก * (-1)์ ์ฌ์ฉํ์๋๋ฐ, -1 ์ญ์ ๋ฌธ๋งฅ์ ๋ชจ๋ฅด๋ฉด ์ดํดํ๊ธฐ ํ๋ ๋งค์ง ๋๋ฒ๋ผ๋ ์ ์ ๊ฐ๊ณผํ์ต๋๋ค.
์ฝ๋ฉํธ ๋จ๊ฒจ์ฃผ์ ๋๋ถ์ ์์๋ณด๋ ๊ณผ์ ์์ ๋ถํธ๋ฅผ ๋ฐ์ ์ํค๋ Math.negateExact() ๋ฉ์๋๋ฅผ ์๋กญ๊ฒ ์๊ฒ ๋์์ต๋๋ค. ํด๋น ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๊ฐ ๋ ๋ช
ํํ๊ฒ ๋๋ฌ๋๊ณ ๋งค์ง ๋๋ฒ๋ ์ ๊ฑฐํ ์ ์์ด ํด๋น ๋ฐฉ์์ผ๋ก ์์ ํด ๋ณด์์ต๋๋ค.
|
|
||
| import java.util.List; | ||
|
|
||
| public record ParticipantsProfitResult( |
There was a problem hiding this comment.
result๋ฅผ ํด๋์ค๋ช ์ ๋ถ์ผ ํ์๊ฐ ์์๊น์?
There was a problem hiding this comment.
๊ฒ์์ด ์ข ๋ฃ๋ ์ดํ์ profit์ด ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ profit๋ง์ผ๋ก ๊ฒฐ๊ณผ๋ผ๋ ์๋ฏธ๋ฅผ ์ถฉ๋ถํ ์ ๋ฌํ ์ ์์ด, result๋ ๋ถ์ผ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์์ ํ์์ต๋๋ค.
| import domain.participant.Name; | ||
| import domain.participant.Player; | ||
|
|
||
| public record PlayerBetting(Name playerName, BettingAmount bettingAmount) { |
There was a problem hiding this comment.
ํ๋ ์ด์ด ๋ฒ ํ ์ ์ด๋ค ์๋๋ก ๋ถ์ธ ์ด๋ฆ์ผ๊น์? ๋ฒ ํ ํ๋ค? ๊ทธ๋ฅ ๋ง ๊ทธ๋๋ก ๋ฒ ํ ?
There was a problem hiding this comment.
ํ๋ ์ด์ด์ ๋ฐฐํ ์ด๋ผ๋ ์๋ฏธ๋ฅผ ๋ด๊ณ ์ถ์์ต๋๋ค.
PlayerBetting๋ณด๋ค PlayerBet์ด ๋ ์๋์ ๊ฐ๊น๋ค๊ณ ์๊ฐ๋ผ ์ด๋ฆ์ ๋ณ๊ฒฝํด ๋ณด์์ต๋๋ค.
๋ค๋ง ์ด ์ด๋ฆ์ด ์ค์ ๋ก๋ ์์ฐ์ค๋ฌ์ด์ง์๋ ์์ง ํ์ ์ด ์์ต๋๋ค.
ํน์ ๋ณด์๊ธฐ์ ๋ ์ ์ ํ ๋ค์ด๋ฐ์ด ์๋ค๋ฉด ์๊ฒฌ ๋ถํ๋๋ฆฝ๋๋ค.
์ด๋ฐ ์์ผ๋ก ํ๋ ์ด์ด์ ๋ฐฐํ ๊ธ์ก์ ํจ๊ป ๋ฌถ๋ ํ์ฌ ๊ตฌ์ฑ ์์ฒด๋ ๊ด์ฐฎ์ ๋ฐฉํฅ์ธ์ง ๊ถ๊ธํฉ๋๋ค!
| @@ -14,7 +14,7 @@ public record CardsSnapshot(List<Card> cards) { | |||
|
|
|||
| public String getFormattedCards() { | |||
There was a problem hiding this comment.
์ด ๋ฉ์๋๊ฐ ๋๋ฉ์ธ ๊ฐ์ฒด์ ํ์ํ๊ฐ์?
There was a problem hiding this comment.
ํ์ํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ถ๋ ฅ์ฉ ๋ฌธ์์ด์ ๋ง๋๋ ์ฑ
์์ ํด๋น ํด๋์ค๊ฐ ์๋๋ผ ์ถ๋ ฅ ๊ณ์ธต์ ์์ด์ผ ํ๋ค๊ณ ๋ดค์ต๋๋ค. ๋ค๋ง ์ด๋ฅผ ์์ ํ๋ ๊ณผ์ ์์ ๋ณ๊ฒฝ ๋ฒ์๊ฐ ์ปค์ก๊ณ , ์ฌ์ดํด2์ ๋ฐฐํ
๊ธฐ๋ฅ ๊ตฌํ๊ณผ ํจ๊ป ์งํํ๊ธฐ์๋ ๋ถ๋ด์ด ํฌ๋ค๊ณ ํ๋จํ์ต๋๋ค.
๊ทธ๋์ ๋ณ๋ ํด๋์ค๋ก ๋ถ๋ฆฌํด ์ ์ง์ ์ผ๋ก ์ฎ๊ธฐ๋ ๋ฐฉํฅ์ ํํ๊ณ , ๊ทธ ๊ณผ์ ์์ ๊ธฐ์กด ๋ฉ์๋๊ฐ ๋จ์ ์๋ ์ํ๋ก ์ ์ถํ๊ฒ ๋์์ต๋๋ค.
Choi-JJunho
left a comment
There was a problem hiding this comment.
๋๋ฌด~ ๋ฏธ์
์ํํ๋๋ผ ๊ณ ์๋ง์ผ์
จ์ต๋๋ค!
๊ตฌ๊ตฌ๊ฐ ๋ฆฌ๋ทฐ๋ฅผ ๊ฐ์ด ๋จ๊ฒจ์ฃผ์
์ ๊น์ง ๋๋๋ค์ ใ
ใ
๐
๊ตฌ๊ตฌ์ ์ฝ๋ฉํธ์๋ ๊ฐ์ด ๋ต๋ณ์ ๋จ๊ฒจ์ฃผ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค ๐
step2๋ ํ์ดํ ์ ๋๋ค!
| private void readyPhase(Participants participants) { | ||
| gameManager.dealInitialCards(participants); | ||
|
|
||
| InitialDealingResult initialDealingResult = InitialDealingResult.from(participants); | ||
| outputView.printInitialDealingResult(initialDealingResult); | ||
| } |
There was a problem hiding this comment.
ํ์ฌ์ ํ๋ ์ด์ด ์ํ์ ํด ์งํ์ ๊ผญ Controller๊ฐ ์๋๋๋ผ๋ ์ธ๋ถ์์ ๋งก๋ ๊ฒ๋ ํ์ฉ๋๋ ์์ค์ธ์ง, ์๋๋ฉด ๋๋ฉ์ธ ์ชฝ์ผ๋ก ๋ ์ฎ๊ฒจ๊ฐ๋ ๊ฒ์ด ์ข์์ง ๊ถ๊ธํฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก๋ playPhase(Dealer, Players)๋ฅผ readyPhase(Participants)์ฒ๋ผ playPhase(Participants)์ผ๋ก ์์ ํ๊ณ ์ถ์๋๋ฐ, ์ด๋ฐ ๋ฐฉํฅ์ด ๊ด์ฐฎ์ ๊ฒ์ธ์ง๋ ๊ถ๊ธํฉ๋๋ค. commit
ํ์ฉ๋๋ ์์ค ํน์ ์ ๋ต์ ์์ต๋๋ค!
๋๋ฌด๊ฐ ์ด๋ ๊ฒ ์์ ํ๊ฒ๋ ์ด์ ์ ์ด๋ ๊ฒ ์์ ํ์ ๋ ์ด๋ค ์ฐจ์ด๊ฐ ์์๋์ง ํ๋ฒ ์ด์ผ๊ธฐํด์ฃผ์ค ์ ์๋์~?
There was a problem hiding this comment.
๊ธฐ์กด์๋ ์ด๊ธฐ ์นด๋ ์ง๊ธ๊ณผ ์ถ๋ ฅ์ฉ ๋ฐ์ดํฐ ์กฐ๋ฆฝ์ ํ๋์ ํด๋์ค๊ฐ ๋ด๋นํ๊ณ ์์์ต๋๋ค. ์ด๋ฅผ ์ด๊ธฐ ์นด๋ ์ง๊ธ์ GameManager๊ฐ, ์ถ๋ ฅ์ฉ ๋ฐ์ดํฐ ์์ฑ์ ๋ณ๋์ ๊ฐ์ฒด๊ฐ ๋ด๋นํ๋๋ก ๋ถ๋ฆฌํ์ต๋๋ค.
๊ทธ ๊ฒฐ๊ณผ ๊ฒ์ ํ๋ฆ ์ ์ด์ ๋ ์ง์คํ ์ ์๊ฒ ๋์๊ณ , ์ด๊ธฐ ์นด๋ ์ง๊ธ ๊ท์น๋ ํ ๊ณณ์ ๋ชจ์ฌ ์์ง๋๊ฐ ๋์์ก์ต๋๋ค. ๋ํ dealInitialCards(participants)์ฒ๋ผ ๊ฐ๋
์ฑ๋ ์ข์์ก๋ค๊ณ ์๊ฐํฉ๋๋ค.
There was a problem hiding this comment.
์ข์ต๋๋ค~! ๋ถ๋ฆฌํ ์ด์ ์ ๊ทธ์ ๋ฐ๋ฅธ ์ด์ ์ ์ ์ค๋ช
ํด์ฃผ์
จ๋ค์!
๋๋ฌด๊ฐ ์ด์ผ๊ธฐํด์ฃผ์ dealInitialCards(participants) ํํ๋ก ๊ฐ๋
์ฑ์ด ์ข์์ง ๋ถ๋ถ๋ ๋์ํฉ๋๋ค. ๐
๋ค๋ฅธ ํฌ๋ฃจ๋ค๊ณผ๋ ์ด์ผ๊ธฐ๋ฅผ ๋๋ ๋ณด๋ฉด์ ๋๋ฌด๊ฐ ์๊ฐํ๋ ํ๋นํ ์๊ฒฌ์ ๊ฒฌ๊ณ ํ ๋ค์ ธ๊ฐ๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค ๐ช
| private static final int HIT_THRESHOLD = 16; | ||
|
|
||
| public Dealer() { | ||
| super(new Name(DEFAULT_NAME)); |
There was a problem hiding this comment.
์ง๋ ๋ฆฌ๋ทฐ์์ ์ ๊ฐ ๋ฏธ์ฒ๋ฐ๊ฒฌ ๋ชปํ ๋ถ๋ถ์ด์๋๋ฐ์ ๐ฅน
์ง๊ธ Name์ ์ ์ ๋ฉ์๋์๋ง ์ด๋ฆ validate๊ฐ ๋ค์ด๊ฐ๊ณ ์์ด์
public static Name from(String rawName) {
validate(rawName);
return new Name(rawName);
}์ด ๊ฒฝ์ฐ ์ฌ๊ธฐ ๋๋ฌ์์ ์์ฑํ๋ ๊ฒ ์ฒ๋ผ new Name(..) ์ผ๋ก ์์ฑ๋ ๊ฑด์ ๋ํด์๋ ๊ฒ์ฆ์ด ์๋ ๊ฑฐ๊ฐ์์!
์ด๋ป๊ฒ ์์ ํด๋ณด๋ฉด ์ข์๊น์?
There was a problem hiding this comment.
๋ง์ํด ์ฃผ์ ๊ฒ ์ฒ๋ผ ๊ธฐ๋ณธ ์์ฑ์๋ก ์์ฑํ ๊ฒฝ์ฐ ๊ฒ์ฆ์ด ๋๋ฝ๋๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
๊ธฐ๋ณธ ์์ฑ์์ ๊ฒ์ฆ ๋ฉ์๋๋ฅผ ํธ์ถํ๋๋ก ํ๊ณ , ์ ์ ๋ฉ์๋์์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ํธ์ถํด ๋ฐํํ๋๋ก ์์ ํ์์ต๋๋ค.
There was a problem hiding this comment.
์ข์ต๋๋ค~ record์์๋ ๊ธฐ๋ณธ์์ฑ์์ ๋ํ ๊ฒ์ฆ์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค
public Name {
validate(value);
}๊ทธ๋ฐ๋ฐ ์ด ์์ ์ผ๋ก Name.from()์ ๋จ์ํ new Name()์ ๊ฐ์ธ๊ธฐ๋ง ํ๊ฒ ๋์๋๋ฐ, ์์์ ๊ตฌ๊ตฌ๊ฐ ๋จ๊ธด ํฉํฐ๋ฆฌ ๋ฉ์๋ ๊ด๋ จ ์ฝ๋ฉํธ์ ๊ฐ์ ๊ณ ๋ฏผ์ Name์์๋ ๋์ผํ๊ฒ ํด๋ณผ ์ ์์ ๊ฒ ๊ฐ์์!
There was a problem hiding this comment.
record์ ๊ธฐ๋ณธ์์ฑ์ ๋ฐฉ์์ ๋ํด์๋ ์๋ก ์์์ต๋๋ค!
์ฌ์ค Name.from์ ์ ๊ฑฐํ๋ ค ํ์ผ๋ ํ ์คํธ ๋ฉ์๋์์ ๋ง์ด ์ฌ์ฉ๋๊ณ ์์ด์ new Name()์ผ๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ด ๋ฒ๊ฑฐ๋ก์ ๋ณด๋ฅํ ์ํ์์ต๋๋ค.
๋ค๋ง ๋ค์ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๋ ์ธํ ๋ฆฌ์ ์ด์ ๋ณ๊ฒฝํด์ฃผ๋ ๊ธฐ๋ฅ์ด ์กด์ฌํ๋ ๊ฒ์ ์๊ฒ๋์ด, ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ์ ๊ฑฐํ์์ต๋๋ค.
| for (int i = 0; i < count; i++) { | ||
| drawnCards.add(cards.getLast()); | ||
| cards.removeLast(); | ||
| } |
There was a problem hiding this comment.
count๊ฐ 60์ด ๋์ด๊ฐ๋ ๋ฑ count๊ฐ ๋น์ ์์ ์ผ๋ก ์ปค์ง๋ฉด ์ฌ๊ธฐ์์๋ ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊น์?
There was a problem hiding this comment.
๋ง์ํ์ ์ํฉ์ฒ๋ผ Deck์ ๋จ์ ์นด๋๋ณด๋ค ๋ง์ ์์ ์นด๋๋ฅผ ์์ฒญํ ๊ฒฝ์ฐ, ์์ธ๊ฐ ๋ฐ์ํ๋ฉฐ ๋น์ ์์ ์ธ ์ข
๋ฃ๊ฐ ๋ ์ํ์ด ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์นด๋๋ฅผ ์ค์ ๋ก ๋ฝ๊ธฐ ์ ์๋์ด ์ถฉ๋ถํ์ง ๊ฒ์ฆํ๋ ๊ณผ์ (ValidateCardsCount)๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
There was a problem hiding this comment.
์ข์ต๋๋ค! ๋ฐฉ์ด ์ฝ๋๋ฅผ ์ ์ถ๊ฐํด์ฃผ์ จ๋ค์ ๐
ํ ๊ฐ์ง ๋ ์ด์ผ๊ธฐํด๋ณด์๋ฉด ์์ธ ๋ฉ์์ง๊ฐ ๋น์ด์๋ ๋ถ๋ถ์ ํ๋ฒ ๋ณผ ์ ์์ ๊ฒ ๊ฐ์์
private void validateCardsCount(int drawCount) {
if (cards.size() < drawCount) {
throw new IllegalArgumentException(); // ์์ธ๋ฉ์์ง๊ฐ ๋น์ด์์.
}์๋ฌ๊ฐ ๋ฌ์ ๋ ๋๋ฒ๊น
์ ์์ฝ๊ฒํ๋ ค๋ฉด ์๋ฌ์ ์๋ฏธ ์๋ ๋ฉ์์ง๋ฅผ ๋ด์์ฃผ๋ ๊ฒ์ด ์ข์ต๋๋ค!
์๋ฅผ ๋ค์ด ์์ฒญํ ์นด๋ ์์ ๋จ์ ์นด๋ ์๋ฅผ ๋ฉ์์ง์ ํฌํจํ๋ฉด ๋ฌธ์ ์์ธ์ ๋ ๋น ๋ฅด๊ฒ ํ์
ํ ์ ์์ ๊ฒ ๊ฐ์์ ๐
There was a problem hiding this comment.
์ถ๊ฐ๋ก ์นด๋๋ฅผ ์ ๊ฑฐํ๋ ๋ก์ง์ ์ด๋ฏธ ์๋ draw ๋ฉ์๋๋ฅผ ํ์ฉํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์์ :)
public List<Card> draw(int count) {
validateCardsCount(count);
List<Card> drawnCards = new ArrayList<>();
for (int i = 0; i < count; i++) {
drawnCards.add(draw());
}
return List.copyOf(drawnCards);
}There was a problem hiding this comment.
์์ธ ๋ฉ์ธ์ง๋ฅผ ์ถ๊ฐํ๊ณ darw()๋ฅผ ์ฌ์ฌ์ฉํ๋๋ก ์์ ํ์ต๋๋ค.
| @@ -11,6 +12,10 @@ public class Players implements Iterable<Player> { | |||
| private static final int MAX_PLAYER_COUNT = 7; | |||
| private final List<Player> players; | |||
There was a problem hiding this comment.
Player๊ฐ ๋ฐฐํ ๊ธ์ก์ ์ง์ ๊ฐ์ง๋ ๊ฒ๋ณด๋ค, BettingTable์ด๋ PlayerBet ๊ฐ์ ๋ณ๋ ๊ฐ์ฒด๊ฐ ๊ด๋ฆฌํ๋ ์ชฝ์ด ๋ ์ข์๊ฑธ๊น์?
PlayerBet์ด Player ์์ฒด๋ฅผ ๋ค๊ธฐ๋ณด๋ค Name๊ณผ BettingAmount๋ง ๊ฐ์ง๋๋ก ๋ถ๋ฆฌํ๋ ๋ฐฉํฅ์ ์ ์ ํ์ง๋ ๊ถ๊ธํฉ๋๋ค.
๊ฐ๊ฐ์ ์ํฉ๋ง๋ค ์ฅ๋จ์ ์ด ์์ด๋ณด์ด๋ค์~!
์ ๋ฆฌํด์ ์ด์ผ๊ธฐํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ด์ผ๊ธฐํด๋ณผ ์ ์๊ณ๊ตฐ์
-
Player๊ฐ ๋ฐฐํ ๊ธ์ก์ ์ง์ ๊ฐ์ง๊ธฐ vs ๋ถ๋ฆฌํ๊ธฐ
- ํ๋ ์ด์ด๊ฐ ๊ฐ์ง๋ค๋ฉด? ์ง๊ด์ฑ๊ณผ ๋จ์ํจ์ ์ฑ๊ธธ ์ ์์ ๊ฒ ๊ฐ๋ค์
- ๋ถ๋ฆฌํ๋ค๋ฉด? ๋จ์ผ ์ฑ ์ ์์น(SRP)์ ์งํค๋ ์๋๋ฅผ ํด๋ณผ ์ ์์ ๊ฒ ๊ฐ์์
-
PlayerBet์ด Player ์ฐธ์กฐ vs Name ์ฐธ์กฐ
- ํ๋ ์ด์ด๋ฅผ ์ฐธ์กฐํ๋ฉด? ์ต์ข ๊ฒฐ์ฐ ๋ ๊ฒฐ๊ณผ์ ๋ฐฐํ ๊ธ์ก์ ์กฐํฉํ๊ธฐ ์์ํ๊ฒ ๋ค์!
- ์ด๋ฆ์ ์ฐธ์กฐํ๋ฉด? ๊ฐ์ฒด์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ ์ ์๊ฒ ๋ค์
์ด๋ฒ ๋ฏธ์ ์์ ๊ด๋ฆฌํด์ผ ํ ์ํ์ ๋ณต์ก๋๋ฅผ ๊ณ ๋ คํด ๋ณด๊ณ , ๋๋ฌด๊ฐ ์๊ฐํ์ ๋๋ ์ด๋ค ๋ฐฉ๋ฒ์ด ๋ ํ๋นํ ๊ฒ ๊ฐ์์ง ์ด์ผ๊ธฐ๋ฅผ ๋ค๋ ค์ฃผ์ธ์!
์์ ์ ์๊ฒฌ์ ๋จ์ ์ฐธ๊ณ ์ฉ์ผ๋ฟ์ด๋ ๋๋ฌด์ ์๊ฐ๊ณผ ๊ทผ๊ฑฐ๋ฅผ ๋ง๋ถ์ฌ์ ์๋ ์ฝ๋ฉํธ๋ฅผ ๋จ๊ฒจ์ฃผ์ธ์
There was a problem hiding this comment.
-
Player๊ฐ ๋ฐฐํ ๊ธ์ก์ ์ง์ ๊ฐ์ง๊ธฐ vs ๋ถ๋ฆฌํ๊ธฐ
์ ๋ ๋ฐฐํ ๊ธ์ก์ Player์ ์ง์ ํฌํจํ๊ธฐ๋ณด๋ค ๋ถ๋ฆฌํ๋ ์ชฝ์ด ๋ ํ๋นํ๋ค๊ณ ํ๋จํ์ต๋๋ค
๋ฐฐํ ๊ธ์ก์ ํ๋ ์ด์ด ์์ฒด์ ์ฑ ์์ด๋ผ๊ธฐ๋ณด๋ค, ํ๋ ์ด์ด์ ์ฐ๊ด๋ ๋ณ๋์ ์ ๋ณด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ๋ถ๋ฆฌํ๋ฉด ๊ฒ์์ ๋ค์ ์งํํ๊ฑฐ๋ ๋ฐฐํ ๊ด๋ จ ๊ท์น์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ์๋Player๋ ์ ์งํ ์ฑ ๋ฐฐํ ์ ๋ณด๋ง ์๋ก ์์ฑํ ์ ์์ด ๋ ๋์ํ๊ธฐ ๋ ์ข์ ๊ฒ์ด๋ผ ์๊ฐํ์ต๋๋ค. -
PlayerBet์ด Player ์ฐธ์กฐ vs Name ์ฐธ์กฐ
PlayerBet์ด ํ์ํ ์ ๋ณด๋Player์ ์ฒด๊ฐ ์๋๋ผPlayer๋ฅผ ์๋ณํ ์ ์๋ ์ต์ํ์ ์ ๋ณด์ ๋ฐฐํ ๊ธ์ก์ด๋ผ๊ณ ํ๋จํ์ต๋๋ค. ๊ทธ๋์Player๋ฅผ ์ง์ ์ฐธ์กฐํ๊ธฐ๋ณด๋คName์ ์ฐธ์กฐํ๋๋ก ํ์ต๋๋ค.Player๋ฅผ ์ฐธ์กฐํ๊ณ ์์ผ๋ฉดPlayer์ ๋ฐฐํ ๊ณผ ๋ฌด๊ดํ ๋ค๋ฅธ ์ํ๋ ํ์์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ ธ ๊ฒฐํฉ๋๊ฐ ๋์์ง ์ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
String๊ณผName์ฌ์ด์์๋ ๊ณ ๋ฏผ์ ํ์๋๋ฐ, ์ด๋ฏธ ํ๋ ์ด์ด๋ฅผ ์๋ณํ๋Name์ด ์กด์ฌํ๋ฏ๋กPlayerBet์์๋Name์ ์ฌ์ฉํ๋ ํธ์ด ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐ ๋ ์ ์ ํ๋ค๊ณ ํ๋จํ์ต๋๋ค.
There was a problem hiding this comment.
๊ฐ ์ ํ์ง์ ๋ํ ๊ทผ๊ฑฐ๋ฅผ ๋ช ํํ๊ฒ ์ ๋ฆฌํด์ฃผ์ จ๋ค์
๋๋ฌด๊ฐ ์ ํํด์ฃผ์ ๊ทผ๊ฑฐ์ ์ถฉ๋ถํ ๋ฉ๋์ด๊ฐ๋๋ค ๐
๊ฒ์์ ๋ค์ ์งํํ๊ฑฐ๋ ๋ฐฐํ
๊ด๋ จ ๊ท์น์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ์๋ Player๋ ์ ์งํ ์ฑ ๋ฐฐํ
์ ๋ณด๋ง ์๋ก ์์ฑํ ์ ์์ด
์ ๋ถ๋ถ์ด ์ข์ ๊ทผ๊ฑฐ๋ก ๋ค๊ฐ์๋ค๊ณ ์๊ฐํด์
์๋ PlayerBet์ด Player ์ฐธ์กฐ vs Name ์ฐธ์กฐ ๋ถ๋ถ์์ ํ๊ฐ์ง๋ง ์๊ฐํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์๊ฒ ํ๋ ์ด์ด๋ฅผ ์๋ณํ๋ Name์ด ์กด์ฌํ๋ค๊ณ ๋ง์ํด์ฃผ์
จ๋๋ฐ ๋๋ช
์ด์ธ์ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋ ๊น์?
There was a problem hiding this comment.
ํ์ฌ๋ Players์ ์์ฑ ๊ณผ์ ์์ ์ค๋ณต ์ด๋ฆ์ ํ์ฉํ์ง ์๊ณ ์๊ณ , Participant์ ๋๋ฑ์ฑ๋ Name ๊ธฐ์ค์ผ๋ก ํ๋จํ๊ณ ์์ด์ Name์ด ํ๋ ์ด์ด๋ฅผ ์๋ณํ๋ ์ญํ ์ ์ํํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ PlayerBet์ด Player ์ ์ฒด ๋์ Name๊ณผ BettingAmount๋ง ๊ฐ์ง๋ ๋ฐฉํฅ์ด ๊ฐ๋ฅํ๋ค๊ณ ํ๋จํ์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ์ธ๊ธํ์ ๋ถ๋ถ์ ๋ณด๊ณ ์๊ฐํด๋ณด๋, Name์ ์๋ณ์๋ก ์ฌ์ฉํ ์ ์๋๊ฐ?๋ ๊ฒฐ๊ตญ ์ด๋ฆ์ ์ค๋ณต์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง์ ๋ฌ๋ ค ์๋ค๊ณ ์๊ฐ์ด ๋์ต๋๋ค.
๋ง์ฝ ์๊ตฌ์ฌํญ์ด ๋ฐ๋์ด ๋๋ช
์ด์ธ์ ํ์ฉํ๊ฒ ๋๋ค๋ฉด Name๋ง์ผ๋ก๋ ์๋ณ์ด ์ด๋ ค์์ง๋ฏ๋ก, PlayerId ๊ฐ์ ๋ณ๋์ ์๋ณ์๊ฐ ํ์ํด์ง ๊ฒ ๊ฐ์ต๋๋ค.
| - [x] ์๋ด ๋ฉ์ธ์ง ์ถ๋ ฅ ํ ์ฐธ์ฌํ ํ๋ ์ด์ด ์ด๋ฆ๋ค์ ์ ๋ ฅ์ ๋ฐ๋๋ค | ||
| - [x] ๋๊ฐ์ด๋ ๋น ๊ณต๋ฐฑ ์์ธ์ฒ๋ฆฌ | ||
| - [x] ์ผํ ๊ธฐ์ค์ผ๋ก ์ ๋ ฅ ๋ถ๋ฆฌ | ||
There was a problem hiding this comment.
๊ณ ๋ฏผ์ด ์์ผ๋ฉด ์ง๋ฌธ์ด ๋๋ฌด ๊ฐ๋ณ๊ณ , ๊ณ ๋ฏผ์ด ๊น์ผ๋ฉด ์คํ๋ ค ๊ผฌ๋ฆฌ ์ง๋ฌธ์ด ๊ณ์ ์๊ฒจ ์ด๊ธฐ ์๋ฌธ์ ๋ฐฉํฅ์ ์์ด๋ฒ๋ฆฌ๊ณค ํ์ต๋๋ค. ์ฌ์ค ์ด ๋ฌธ์ ๋๋ฌธ์ ๋์ฑ ์ ์ ์๋ ๋ฏธ์ ์งํ์ด ๋์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์์์ง๋ ์๋ก์ด ๊ฐ๋ ๊ณผ ์๋กญ๊ฒ ๋ณด์ด๋ ๋ฌธ์ ์ ๋ค์ ๊ฐ๋นํ๊ธฐ ์ด๋ ค์ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ฃผ๋ ธ๋ ์ด๋ฐ ์ํฉ์์ ์ง๋ฌธ์ ์ ์ ํ ๊น์ด์ ํ์ด๋ฐ์ ์ก๋ ๊ธฐ์ค์ผ๋ก ์๋ ์ง ์ฌ์ญค๋ณด๊ณ ์ถ์ต๋๋ค.
์ด์ ๋ฏธ์ ์์ ์ ๊ฐ ๋๋ฌด ๋ง์ ์ง๋ฌธ์ ๋๋ ธ๋๊ฑฐ๊ฐ๋ค์ ๐
์ง๋ฌธ์ ํ์ด๋ฐ์ ๋ํ ์ ๊ธฐ์ค์ ๋ง์๋๋ฆฌ๋ฉด, ๋ด๊ฐ ์ดํดํ ๊ฒ, ์๋ํด ๋ณธ ๊ฒ, ๋งํ ์ง์ ์ด ์ค์ค๋ก ๋ช ํํด์ก์ ๋๊ฐ ๊ฐ์ฅ ์ข์ ํ์ด๋ฐ์ด๋ผ๊ณ ์๊ฐํด์. ใ ใ
์ง๊ธ์ ์ง๋ฌธ์ผ๋ก๋ ๋๋ฌด๊ฐ ๊ตฌ์ฒด์ ์ผ๋ก ์ธ์ , ์ด๋ค ์ด๋ ค์์ ๊ฒช์ผ์
จ๋์ง ํ์
ํ๊ธฐ๊ฐ ์กฐ๊ธ ์ด๋ ต๋ค์ ๐ฅน
์ด๋ฒ์ ๊ฒช์ผ์
จ๋ ์ด๋ ค์ ์ค ํ๋๋ฅผ ๊ณจ๋ผ ์ ์ธ ๊ฐ์ง ๊ธฐ์ค์ผ๋ก ์ ๋ฆฌํด์ ๋ค์ ๋ค๋ ค์ฃผ์๋ฉด ๋ ์ข์ ๋ฐฉํฅ์ ํจ๊ป ๊ณ ๋ฏผํด ๋ณผ ์ ์์ ๊ฒ ๊ฐ์์!
symflee
left a comment
There was a problem hiding this comment.
๋ฆฌ๋ทฐ ํด์ฃผ์ ๋ถ๋ถ๋ค ๋ฐ์ํ์ฌ ์ผ๋ถ ์์ ํ์์ต๋๋ค.
์ด๋ฒ์๋ ์ ๋ถํ๋๋ฆฝ๋๋ค.
| private void readyPhase(Participants participants) { | ||
| gameManager.dealInitialCards(participants); | ||
|
|
||
| InitialDealingResult initialDealingResult = InitialDealingResult.from(participants); | ||
| outputView.printInitialDealingResult(initialDealingResult); | ||
| } |
There was a problem hiding this comment.
๊ธฐ์กด์๋ ์ด๊ธฐ ์นด๋ ์ง๊ธ๊ณผ ์ถ๋ ฅ์ฉ ๋ฐ์ดํฐ ์กฐ๋ฆฝ์ ํ๋์ ํด๋์ค๊ฐ ๋ด๋นํ๊ณ ์์์ต๋๋ค. ์ด๋ฅผ ์ด๊ธฐ ์นด๋ ์ง๊ธ์ GameManager๊ฐ, ์ถ๋ ฅ์ฉ ๋ฐ์ดํฐ ์์ฑ์ ๋ณ๋์ ๊ฐ์ฒด๊ฐ ๋ด๋นํ๋๋ก ๋ถ๋ฆฌํ์ต๋๋ค.
๊ทธ ๊ฒฐ๊ณผ ๊ฒ์ ํ๋ฆ ์ ์ด์ ๋ ์ง์คํ ์ ์๊ฒ ๋์๊ณ , ์ด๊ธฐ ์นด๋ ์ง๊ธ ๊ท์น๋ ํ ๊ณณ์ ๋ชจ์ฌ ์์ง๋๊ฐ ๋์์ก์ต๋๋ค. ๋ํ dealInitialCards(participants)์ฒ๋ผ ๊ฐ๋
์ฑ๋ ์ข์์ก๋ค๊ณ ์๊ฐํฉ๋๋ค.
| @@ -11,6 +12,10 @@ public class Players implements Iterable<Player> { | |||
| private static final int MAX_PLAYER_COUNT = 7; | |||
| private final List<Player> players; | |||
There was a problem hiding this comment.
-
Player๊ฐ ๋ฐฐํ ๊ธ์ก์ ์ง์ ๊ฐ์ง๊ธฐ vs ๋ถ๋ฆฌํ๊ธฐ
์ ๋ ๋ฐฐํ ๊ธ์ก์ Player์ ์ง์ ํฌํจํ๊ธฐ๋ณด๋ค ๋ถ๋ฆฌํ๋ ์ชฝ์ด ๋ ํ๋นํ๋ค๊ณ ํ๋จํ์ต๋๋ค
๋ฐฐํ ๊ธ์ก์ ํ๋ ์ด์ด ์์ฒด์ ์ฑ ์์ด๋ผ๊ธฐ๋ณด๋ค, ํ๋ ์ด์ด์ ์ฐ๊ด๋ ๋ณ๋์ ์ ๋ณด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ๋ถ๋ฆฌํ๋ฉด ๊ฒ์์ ๋ค์ ์งํํ๊ฑฐ๋ ๋ฐฐํ ๊ด๋ จ ๊ท์น์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ์๋Player๋ ์ ์งํ ์ฑ ๋ฐฐํ ์ ๋ณด๋ง ์๋ก ์์ฑํ ์ ์์ด ๋ ๋์ํ๊ธฐ ๋ ์ข์ ๊ฒ์ด๋ผ ์๊ฐํ์ต๋๋ค. -
PlayerBet์ด Player ์ฐธ์กฐ vs Name ์ฐธ์กฐ
PlayerBet์ด ํ์ํ ์ ๋ณด๋Player์ ์ฒด๊ฐ ์๋๋ผPlayer๋ฅผ ์๋ณํ ์ ์๋ ์ต์ํ์ ์ ๋ณด์ ๋ฐฐํ ๊ธ์ก์ด๋ผ๊ณ ํ๋จํ์ต๋๋ค. ๊ทธ๋์Player๋ฅผ ์ง์ ์ฐธ์กฐํ๊ธฐ๋ณด๋คName์ ์ฐธ์กฐํ๋๋ก ํ์ต๋๋ค.Player๋ฅผ ์ฐธ์กฐํ๊ณ ์์ผ๋ฉดPlayer์ ๋ฐฐํ ๊ณผ ๋ฌด๊ดํ ๋ค๋ฅธ ์ํ๋ ํ์์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ ธ ๊ฒฐํฉ๋๊ฐ ๋์์ง ์ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
String๊ณผName์ฌ์ด์์๋ ๊ณ ๋ฏผ์ ํ์๋๋ฐ, ์ด๋ฏธ ํ๋ ์ด์ด๋ฅผ ์๋ณํ๋Name์ด ์กด์ฌํ๋ฏ๋กPlayerBet์์๋Name์ ์ฌ์ฉํ๋ ํธ์ด ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐ ๋ ์ ์ ํ๋ค๊ณ ํ๋จํ์ต๋๋ค.
| for (int i = 0; i < count; i++) { | ||
| drawnCards.add(cards.getLast()); | ||
| cards.removeLast(); | ||
| } |
There was a problem hiding this comment.
๋ง์ํ์ ์ํฉ์ฒ๋ผ Deck์ ๋จ์ ์นด๋๋ณด๋ค ๋ง์ ์์ ์นด๋๋ฅผ ์์ฒญํ ๊ฒฝ์ฐ, ์์ธ๊ฐ ๋ฐ์ํ๋ฉฐ ๋น์ ์์ ์ธ ์ข
๋ฃ๊ฐ ๋ ์ํ์ด ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์นด๋๋ฅผ ์ค์ ๋ก ๋ฝ๊ธฐ ์ ์๋์ด ์ถฉ๋ถํ์ง ๊ฒ์ฆํ๋ ๊ณผ์ (ValidateCardsCount)๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
|
|
||
| private void readyPhase(Dealer dealer, Players players) { | ||
| gameManager.dealStartingCards(dealer); | ||
| gameManager.dealCardTo(players, 2); |
There was a problem hiding this comment.
๋ต
INITIAL_CARD_COUNT ๋ผ๋ ์ด๋ฆ์ ๋ถ์ฌํ๋๋ก ์์ ํ์ต๋๋ค.
| return new BettingTable(bettingTable); | ||
| } | ||
|
|
||
| public void add(PlayerBetting playerBetting) { |
There was a problem hiding this comment.
๊ฒ์์์ ๋ฒ ํ
ํ ๋ ์ฌ์ฉํ๋ ํํ์ธ 'place a bet'์์ ๋ฉ์๋๋ช
์ place๋ก ์์ ํด ๋ณด์์ต๋๋ค.
์ธ๋ถ์ placeBet์ด๋ผ๋ ๋ฉ์๋ ์์์ bettingTable.place(playerBet) ํํ๋ก ํธ์ถํ๊ฒ ๋๋๋ฐ ์ด๋ฌํ ๋ค์ด๋ฐ์ด ์ ์ ํ ๊น์?
| private static final int HIT_THRESHOLD = 16; | ||
|
|
||
| public Dealer() { | ||
| super(new Name(DEFAULT_NAME)); |
There was a problem hiding this comment.
๋ง์ํด ์ฃผ์ ๊ฒ ์ฒ๋ผ ๊ธฐ๋ณธ ์์ฑ์๋ก ์์ฑํ ๊ฒฝ์ฐ ๊ฒ์ฆ์ด ๋๋ฝ๋๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
๊ธฐ๋ณธ ์์ฑ์์ ๊ฒ์ฆ ๋ฉ์๋๋ฅผ ํธ์ถํ๋๋ก ํ๊ณ , ์ ์ ๋ฉ์๋์์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ํธ์ถํด ๋ฐํํ๋๋ก ์์ ํ์์ต๋๋ค.
|
|
||
| import java.util.List; | ||
|
|
||
| public record ParticipantsProfitResult( |
There was a problem hiding this comment.
๊ฒ์์ด ์ข ๋ฃ๋ ์ดํ์ profit์ด ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ profit๋ง์ผ๋ก ๊ฒฐ๊ณผ๋ผ๋ ์๋ฏธ๋ฅผ ์ถฉ๋ถํ ์ ๋ฌํ ์ ์์ด, result๋ ๋ถ์ผ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์์ ํ์์ต๋๋ค.
Choi-JJunho
left a comment
There was a problem hiding this comment.
๋๋ฌด~! ๋ฆฌ๋ทฐ ๋ฐ์ ๋ฐ ์ฝ๋ฉํธ๋ฅผ ์ ๋จ๊ฒจ์ฃผ์
จ๋ค์!
๋ช๊ฐ์ง ํ์ธํด๋ณผ๋งํ ๋ถ๋ถ์ด ์กฐ๊ธ ๋จ์์์ด Request changes๋ฅผ ๋จ๊น๋๋ค!
ํ์ดํ
์
๋๋ค ๐ช
| public class RandomDeckShuffler implements DeckShuffler { | ||
| @Override | ||
| public List<Card> shuffle(List<Card> cards) { | ||
| Collections.shuffle(cards); | ||
|
|
||
| return cards; |
There was a problem hiding this comment.
Collections.shuffle(cards); ์ ์ํํ๊ณ ๋ฐํํ๊ณ ์๋ค์!
cards๊ฐ immutable์ด๋ผ๋ฉด ์ด๋ค ์ผ์ด ์ผ์ด๋ ๊น์?
There was a problem hiding this comment.
UnsupportedOperationException์์ธ๊ฐ ๋ฐ์ํ๊ฒ๋ฉ๋๋ค..!
์ธํฐํ์ด์ค DeckShuffler ๋ List<Card> shuffle(List<Card> cards)๋ก ์ ์ธ๋์ด์์ต๋๋ค. ์ด ์๊ทธ๋์ณ๋ฅผ ๋ณด๋ฉด, ์ด๋ ํ List<Card>๋ ๋ฐ์์ ๋ฐํํด์ค ๊ฒ์ผ๋ก ๊ธฐ๋๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ์ค์ ๋ก๋ โ์ ๋ฌ๋ฐ์ ๋ฆฌ์คํธ๋ฅผ ์ง์ ๋ณ๊ฒฝํ๊ธฐ์ mutable์ ์๊ตฌํ๋โ Collections.shuffle()๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์ฆ, ๊ธฐ๋๋๋ ๋์๊ณผ ์ค์ ๋์์ ๊ฐ๊ทน์ด ์กด์ฌํ๋ ์ํฉ์ด์์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ๊ตฌํ์ฒด RandomDeckShuffler.shuffle(List<Card>)์ ์ด์ ์ฒ๋ผ ์ ๋ฌ๋ฐ์ ๋ฆฌ์คํธ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด Collections.shuffle()์๊ฒ ์ ๋ฌํ๋๋ก ๋๋๋ ธ์ต๋๋ค.
๋ค๋ง, ๋๋๋ฆฌ๊ฒ๋๋ฉด ๋ณต์ฌ ์ฑ
์์ด ๋ถ๋ถ๋ช
ํ๊ณ ์ค๋ณต์ผ๋ก ์ํ๋๋ ๋ฌธ์ ๊ฐ ๋ค์ ์๊ธฐ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์, Deck์ด ์์ ์ ๋ฆฌ์คํธ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด ์ ๋ฌํ๋ ๊ฒ์, ๋ณต์ฌ ๋น์ฉ์ด ๋ฐ์ํ์ง ์๋ unmodifiableList๋ฅผ ์ด์ฉํด ์ฝ๊ธฐ์ ์ฉ ๋ทฐ๋ฅผ ๋๊ธฐ๋๋ก ํ์์ต๋๋ค.
์ด๋ฅผํตํด ์ด์ค ๋ณต์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉด์, Deck์ด ์์ ์ cards๋ฅผ ์ธ๋ถ์์ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ํ๋ก ๋๊ธฐ์ง ์๋๋ก ์์ ํด๋ณด์์ต๋๋ค.
์ฆ, ์ด์ ์์ ์์ unmodifiableList๋ฅผ ์ฌ์ฉํ์ผ๋ฉด ํ ๋ฒ์ ํด๊ฒฐ๋ ๋ฌธ์ ์์ต๋๋ค.
์ ๊ฐ ์ดํดํ๊ณ ์์ ํ ๊ฒ์ด ์๋ํ์ ๋ฐฉํฅ์ด ๋ง์๊น์?
There was a problem hiding this comment.
๋ค~! ์๋ํ๋๋ก ์ ์์ ํด์ฃผ์
จ์ด์ ๐
์ ๋ฆฌํด๋ณด์๋ฉด ์ ๊ฐ ๋๋ ธ๋ ๋ฆฌ๋ทฐ์๋ ๋ค์๊ณผ ๊ฐ์ ์๋๊ฐ ์์๋ค๊ณ ์ดํดํด์ฃผ์๋ฉด ์ข์ ๊ฒ ๊ฐ์์
DeckโunmodifiableList๋ก ์ฝ๊ธฐ ์ ์ฉ ๋ทฐ๋ฅผ ์ ๋ฌ (๋ด๋ถ ์ํ ๋ณดํธ, ๋ถํ์ํ ๋ณต์ฌ ์ ๊ฑฐ)RandomDeckShufflerโ ์ ๋ฌ๋ฐ์ ๋ฆฌ์คํธ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด shuffle (์ด๋คList๋ ์์ ํ๊ฒ ์ฒ๋ฆฌ)
unmodifiableList๋ก ์ด์ค ๋ณต์ฌ ๋ฌธ์ ๊น์ง ์ ํด๊ฒฐํด์ฃผ์
จ๋ค์๐
| private void readyPhase(Participants participants) { | ||
| gameManager.dealInitialCards(participants); | ||
|
|
||
| InitialDealingResult initialDealingResult = InitialDealingResult.from(participants); | ||
| outputView.printInitialDealingResult(initialDealingResult); | ||
| } |
There was a problem hiding this comment.
์ข์ต๋๋ค~! ๋ถ๋ฆฌํ ์ด์ ์ ๊ทธ์ ๋ฐ๋ฅธ ์ด์ ์ ์ ์ค๋ช
ํด์ฃผ์
จ๋ค์!
๋๋ฌด๊ฐ ์ด์ผ๊ธฐํด์ฃผ์ dealInitialCards(participants) ํํ๋ก ๊ฐ๋
์ฑ์ด ์ข์์ง ๋ถ๋ถ๋ ๋์ํฉ๋๋ค. ๐
๋ค๋ฅธ ํฌ๋ฃจ๋ค๊ณผ๋ ์ด์ผ๊ธฐ๋ฅผ ๋๋ ๋ณด๋ฉด์ ๋๋ฌด๊ฐ ์๊ฐํ๋ ํ๋นํ ์๊ฒฌ์ ๊ฒฌ๊ณ ํ ๋ค์ ธ๊ฐ๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค ๐ช
| private static final int HIT_THRESHOLD = 16; | ||
|
|
||
| public Dealer() { | ||
| super(new Name(DEFAULT_NAME)); |
There was a problem hiding this comment.
์ข์ต๋๋ค~ record์์๋ ๊ธฐ๋ณธ์์ฑ์์ ๋ํ ๊ฒ์ฆ์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค
public Name {
validate(value);
}๊ทธ๋ฐ๋ฐ ์ด ์์ ์ผ๋ก Name.from()์ ๋จ์ํ new Name()์ ๊ฐ์ธ๊ธฐ๋ง ํ๊ฒ ๋์๋๋ฐ, ์์์ ๊ตฌ๊ตฌ๊ฐ ๋จ๊ธด ํฉํฐ๋ฆฌ ๋ฉ์๋ ๊ด๋ จ ์ฝ๋ฉํธ์ ๊ฐ์ ๊ณ ๋ฏผ์ Name์์๋ ๋์ผํ๊ฒ ํด๋ณผ ์ ์์ ๊ฒ ๊ฐ์์!
| for (int i = 0; i < count; i++) { | ||
| drawnCards.add(cards.getLast()); | ||
| cards.removeLast(); | ||
| } |
There was a problem hiding this comment.
์ข์ต๋๋ค! ๋ฐฉ์ด ์ฝ๋๋ฅผ ์ ์ถ๊ฐํด์ฃผ์ จ๋ค์ ๐
ํ ๊ฐ์ง ๋ ์ด์ผ๊ธฐํด๋ณด์๋ฉด ์์ธ ๋ฉ์์ง๊ฐ ๋น์ด์๋ ๋ถ๋ถ์ ํ๋ฒ ๋ณผ ์ ์์ ๊ฒ ๊ฐ์์
private void validateCardsCount(int drawCount) {
if (cards.size() < drawCount) {
throw new IllegalArgumentException(); // ์์ธ๋ฉ์์ง๊ฐ ๋น์ด์์.
}์๋ฌ๊ฐ ๋ฌ์ ๋ ๋๋ฒ๊น
์ ์์ฝ๊ฒํ๋ ค๋ฉด ์๋ฌ์ ์๋ฏธ ์๋ ๋ฉ์์ง๋ฅผ ๋ด์์ฃผ๋ ๊ฒ์ด ์ข์ต๋๋ค!
์๋ฅผ ๋ค์ด ์์ฒญํ ์นด๋ ์์ ๋จ์ ์นด๋ ์๋ฅผ ๋ฉ์์ง์ ํฌํจํ๋ฉด ๋ฌธ์ ์์ธ์ ๋ ๋น ๋ฅด๊ฒ ํ์
ํ ์ ์์ ๊ฒ ๊ฐ์์ ๐
| @@ -11,6 +12,10 @@ public class Players implements Iterable<Player> { | |||
| private static final int MAX_PLAYER_COUNT = 7; | |||
| private final List<Player> players; | |||
There was a problem hiding this comment.
๊ฐ ์ ํ์ง์ ๋ํ ๊ทผ๊ฑฐ๋ฅผ ๋ช ํํ๊ฒ ์ ๋ฆฌํด์ฃผ์ จ๋ค์
๋๋ฌด๊ฐ ์ ํํด์ฃผ์ ๊ทผ๊ฑฐ์ ์ถฉ๋ถํ ๋ฉ๋์ด๊ฐ๋๋ค ๐
๊ฒ์์ ๋ค์ ์งํํ๊ฑฐ๋ ๋ฐฐํ
๊ด๋ จ ๊ท์น์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ์๋ Player๋ ์ ์งํ ์ฑ ๋ฐฐํ
์ ๋ณด๋ง ์๋ก ์์ฑํ ์ ์์ด
์ ๋ถ๋ถ์ด ์ข์ ๊ทผ๊ฑฐ๋ก ๋ค๊ฐ์๋ค๊ณ ์๊ฐํด์
์๋ PlayerBet์ด Player ์ฐธ์กฐ vs Name ์ฐธ์กฐ ๋ถ๋ถ์์ ํ๊ฐ์ง๋ง ์๊ฐํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์๊ฒ ํ๋ ์ด์ด๋ฅผ ์๋ณํ๋ Name์ด ์กด์ฌํ๋ค๊ณ ๋ง์ํด์ฃผ์
จ๋๋ฐ ๋๋ช
์ด์ธ์ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋ ๊น์?
| public String name() { | ||
| return name.value(); | ||
| } | ||
|
|
||
| public Name getName() { | ||
| return this.name; | ||
| } |
There was a problem hiding this comment.
name๊ณผ getName์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ์?
There was a problem hiding this comment.
์ฒ์์๋ ์ธ๋ถ(View ๋ฑ)์์ ๋ฌธ์์ด ์ด๋ฆ์ด ๋ฐ๋ก ํ์ํ ๊ฒฝ์ฐ ํธํ๊ฒ ์ฌ์ฉํ๋ ค๊ณ name() ๋ฉ์๋๋ฅผ ์ถ๊ฐํด ๋์์ต๋๋ค.
์ง๊ธ์ getName()๊ณผ ๋ค์ด๋ฐ์ด ๋น์ทํด ํธ์ถํ๋ ์
์ฅ์์ ํผ๋์ ์ค ์ ์๊ณ , ์์๊ฐ์ ํฌ์ฅํ๊ณ ์๋ Name์ ์ญํ ์ ํ๋ฆฌ๊ฒ ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค.
Name์ ์ ๋ฌํ๊ณ Name์ ๋ฐธ๋ฅ๋ฅผ ๊บผ๋ด๋๋ก ํ๋ ๊ฒ์ด ๋ ์ข์ ๋ฐฉํฅ์ผ๊น์?
๋ค๋ง ํ์ฌ ๋ณ๊ฒฝ ๋ฒ์๊ฐ ์ปค์ง ๊ฒ ๊ฐ์์, name() ๋ฉ์๋๋ ์ญ์ ํ๊ณ , ๋ฌธ์์ด ๊ฐ์ด ํ์ํ ๊ณณ์์๋getName().value()ํํ๋ก Name ๊ฐ์ฒด๋ฅผ ํตํด ์ง์ ๊บผ๋ด ์ฐ๋๋ก ์ฝ๋๋ฅผ ์์ ํ์์ต๋๋ค.
| public List<PlayerMatchResult> playersBettingResult() { | ||
| List<PlayerMatchResult> playersBettingResult = new ArrayList<>(); | ||
|
|
||
| for (Player player : players) { | ||
| playersBettingResult.add(PlayerMatchResult.from(dealer, player)); | ||
| } | ||
|
|
||
| return playersBettingResult; | ||
| } |
There was a problem hiding this comment.
๋ฐฐํ
๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํ๋ ํ์๋ Participants์ ์ญํ ๋ก ์ ์ ํ๋ค๊ณ ์๊ฐํ์๋์?
BettingTable์ ์ญํ ์ ๋ฌด์์ธ๊ฐ์?
There was a problem hiding this comment.
ํ๋ ์ด์ด๊ฐ ๋ค์ธ๋ด ๋ธ๋์ญ์ธ์ง, ์น๋ฆฌ์ธ์ง, ๋ฌด์น๋ถ์ธ์ง ๋ฑ ๊ฒ์ ์ข ๋ฃ ์ ์นด๋์ ๋ฐ๋ฅธ ์นํจ ๊ฒฐ๊ณผ๋ฅผ BettingResult๋ผ๋ ๋ค์ด๋ฐ์ผ๋ก ์ฌ์ฉํด ํผ๋์ด ์์๊ณ ๊ฐ์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ํ์ง ๋ชปํ์์ต๋๋ค!
Participants๊ฐ ๋๋ฌ์ ํ๋ ์ด์ด๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ๋๋ฌ์ ํ๋ ์ด์ด๊ฐ ํธ๋๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ Participants๊ฐ ENUM ์นํจ ๊ท์น์ ๋๋ฌ์ ํ๋ ์ด์ด์ ์ ์๋ฅผ ๋๊ฒจ ์นํจ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ค๋ ๊ฒ์ ์ ์ ํ๋ค๊ณ ํ๋จํ์ต๋๋ค.
๋ฐ๋ผ์, ๋ค์ด๋ฐ๋ง ์ค์ ๊ฒ์ ์ฉ์ด์ธ Showdown์ผ๋ก ๋ค์ ์์ ํด๋ณด์์ต๋๋ค.
There was a problem hiding this comment.
์ข์ต๋๋ค~! ๋๋ฌด๊ฐ ๋ง์ํด์ฃผ์ ๊ธฐ์ค์ผ๋ก ์ ๋ฉ๋์ด ๊ฐ๋ค์ ๐
์ง๊ธ ๊ท๋ชจ์์๋ ์ข์ ๊ตฌ์กฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค!
์ง๊ธ ๊ท๋ชจ์์๋ ๊ด์ฐฎ์ง๋ง ์นํจ ํ์ ๊ท์น์ด ๋ณต์กํด์ง๋ฉด ์ด ๋ก์ง์ ๋ํ ๋ถ๋ฆฌ๋ฅผ ๊ฒํ ํด๋ณผ ์ ์๊ฒ ๋ค์ :)
| for (int i = 0; i < count; i++) { | ||
| drawnCards.add(cards.getLast()); | ||
| cards.removeLast(); | ||
| } |
There was a problem hiding this comment.
์ถ๊ฐ๋ก ์นด๋๋ฅผ ์ ๊ฑฐํ๋ ๋ก์ง์ ์ด๋ฏธ ์๋ draw ๋ฉ์๋๋ฅผ ํ์ฉํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์์ :)
public List<Card> draw(int count) {
validateCardsCount(count);
List<Card> drawnCards = new ArrayList<>();
for (int i = 0; i < count; i++) {
drawnCards.add(draw());
}
return List.copyOf(drawnCards);
}
Choi-JJunho
left a comment
There was a problem hiding this comment.
๋๋ฌด~! ๋ธ๋์ญ ๋ฏธ์
์์ฃผํ์๋๋ผ ๋๋ฌด ๊ณ ์ ๋ง์ผ์
จ์ต๋๋ค! ๐
์ด๋ฒ ๋ฏธ์
์ ํตํด ํ ๋จ๊ณ ๋ ํฌ๊ฒ ์ฑ์ฅํ์ ๋ชจ์ต์ด ๋๋ณด์ฌ์ ๋ฆฌ๋ทฐํ๋ ์ ๋ ๊ฐ์ด ๋ฐฐ์ธ์ ์ด ๋ง์์ ์ข์์ต๋๋ค ๐ช
์กฐ๊ธํดํ์ง ์๊ณ ์ง๊ธ์ฒ๋ผ ๋๋ฌด๋ง์ ์๋๋ก ์ฐจ๊ทผ์ฐจ๊ทผ ๋์๊ฐ๋ค ๋ณด๋ฉด ๋น ๋ฅด๊ฒ ์ฑ์ฅํด์์๊ฒ์ด๋ผ ์๊ฐํฉ๋๋ค
์๊ตฌ์ฌํญ๊ณผ ์ฝ๋ฉํธ ์ ๋ฐ์ํด์ฃผ์
์ ์ด๋ฒ๋ฏธ์
์ ์ฌ๊ธฐ์ Approve & Merge ํ๊ฒ ์ต๋๋ค.
๋ค์ ๋ฏธ์
๋ ํ์ดํ
์
๋๋ค! ๐
| public class RandomDeckShuffler implements DeckShuffler { | ||
| @Override | ||
| public List<Card> shuffle(List<Card> cards) { | ||
| Collections.shuffle(cards); | ||
|
|
||
| return cards; |
There was a problem hiding this comment.
๋ค~! ์๋ํ๋๋ก ์ ์์ ํด์ฃผ์
จ์ด์ ๐
์ ๋ฆฌํด๋ณด์๋ฉด ์ ๊ฐ ๋๋ ธ๋ ๋ฆฌ๋ทฐ์๋ ๋ค์๊ณผ ๊ฐ์ ์๋๊ฐ ์์๋ค๊ณ ์ดํดํด์ฃผ์๋ฉด ์ข์ ๊ฒ ๊ฐ์์
DeckโunmodifiableList๋ก ์ฝ๊ธฐ ์ ์ฉ ๋ทฐ๋ฅผ ์ ๋ฌ (๋ด๋ถ ์ํ ๋ณดํธ, ๋ถํ์ํ ๋ณต์ฌ ์ ๊ฑฐ)RandomDeckShufflerโ ์ ๋ฌ๋ฐ์ ๋ฆฌ์คํธ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด shuffle (์ด๋คList๋ ์์ ํ๊ฒ ์ฒ๋ฆฌ)
unmodifiableList๋ก ์ด์ค ๋ณต์ฌ ๋ฌธ์ ๊น์ง ์ ํด๊ฒฐํด์ฃผ์
จ๋ค์๐
| public List<PlayerMatchResult> playersBettingResult() { | ||
| List<PlayerMatchResult> playersBettingResult = new ArrayList<>(); | ||
|
|
||
| for (Player player : players) { | ||
| playersBettingResult.add(PlayerMatchResult.from(dealer, player)); | ||
| } | ||
|
|
||
| return playersBettingResult; | ||
| } |
There was a problem hiding this comment.
์ข์ต๋๋ค~! ๋๋ฌด๊ฐ ๋ง์ํด์ฃผ์ ๊ธฐ์ค์ผ๋ก ์ ๋ฉ๋์ด ๊ฐ๋ค์ ๐
์ง๊ธ ๊ท๋ชจ์์๋ ์ข์ ๊ตฌ์กฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค!
์ง๊ธ ๊ท๋ชจ์์๋ ๊ด์ฐฎ์ง๋ง ์นํจ ํ์ ๊ท์น์ด ๋ณต์กํด์ง๋ฉด ์ด ๋ก์ง์ ๋ํ ๋ถ๋ฆฌ๋ฅผ ๊ฒํ ํด๋ณผ ์ ์๊ฒ ๋ค์ :)
์ฒดํฌ ๋ฆฌ์คํธ
test๋ฅผ ์คํํ์ ๋, ๋ชจ๋ ํ ์คํธ๊ฐ ์ ์์ ์ผ๋ก ํต๊ณผํ๋์?์ด๋ค ๋ถ๋ถ์ ์ง์คํ์ฌ ๋ฆฌ๋ทฐํด์ผ ํ ๊น์?
๊ฒ์ ์งํ์ Controller์์ ์ด๋๊น์ง ๋ค๋ฃจ๋ ๊ฒ์ด ํ์ฉ๋๋์ง
ํ์ฌ๋
playPhase(Dealer, Players)์์์ํํ์ ๋๋ค.
๊ทธ๋ฐ๋ฐ ์ด ๊ตฌ์กฐ๋
Controller๊ฐ ๊ฒ์์ ํ๋ฆ์ ๋๋ฌด ๋ง์ด ์ง์ ๋ค๋ฃจ๋ ๊ฒ ๊ฐ๊ธฐ๋ ํ๊ณ , ๋ฐ๋๋ก ํ๋ ์ด์ด ํด์ ์ฌ์ฉ์ ์ ๋ ฅ์ด ํ์ํด์ ๋๋ฉ์ธ ์์ผ๋ก ๋ฃ๊ธฐ๋ ์ ๋งคํ๊ฒ ๋๊ปด์ง๋๋ค.์ ๊ฐ ๊ถ๊ธํ ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Controller๊ฐ ์๋๋๋ผ๋ ์ธ๋ถ์์ ๋งก๋ ๊ฒ๋ ํ์ฉ๋๋ ์์ค์ธ์ง, ์๋๋ฉด ๋๋ฉ์ธ ์ชฝ์ผ๋ก ๋ ์ฎ๊ฒจ๊ฐ๋ ๊ฒ์ด ์ข์์ง ๊ถ๊ธํฉ๋๋ค.playPhase(Dealer, Players)๋ฅผreadyPhase(Participants)์ฒ๋ผplayPhase(Participants)์ผ๋ก ์์ ํ๊ณ ์ถ์๋๋ฐ, ์ด๋ฐ ๋ฐฉํฅ์ด ๊ด์ฐฎ์ ๊ฒ์ธ์ง๋ ๊ถ๊ธํฉ๋๋ค.(https://github.com/woowacourse/java-blackjack/pull/1137/changes#diff-bf343d0582705538ce76c37ebbe336f7a98051e3b9b8386f9bb31329d6deb2eaR55)
๋ฐฐํ ์ ๋ณด๋ฅผ Player๊ฐ ์ง์ ๊ฐ์ ธ์ผ ํ๋์ง, ๋ณ๋ ๊ฐ์ฒด๊ฐ ๊ด๋ฆฌํด์ผ ํ๋์ง
์ฒ์์๋
Player๊ฐ ๋ฐฐํ ๊ธ์ก์ ์ง์ ๊ฐ์ง๋ ๋ฐฉํฅ๋ ์๊ฐํ๋๋ฐ, ๋ฐฐํ ์ํฉ์BettingTable๊ฐ์ ๋ณ๋ ๊ฐ์ฒด๊ฐ ๊ด๋ฆฌํ๋ ๊ฒ์ด ๋ ๋ซ์ง ์์๊น ๊ณ ๋ฏผํ์ต๋๋ค.์ด๋ ๊ฒ ํ๋ฉด ํ๋ ์ด์ด ์์ฒด์ ๋ฐฐํ ์ํฉ์ ๋ถ๋ฆฌํ ์ ์๊ณ , ๋์ค์ ๊ฒ์์ ์ฌ๋ฌ ๋ฒ ์งํํ๋ ๊ตฌ์กฐ๋ก๋ ํ์ฅํ๊ธฐ ์ฌ์ธ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
Player๊ฐ ๋ฐฐํ ๊ธ์ก์ ์ง์ ๊ฐ์ง๋ ๊ฒ๋ณด๋ค,BettingTable์ด๋PlayerBet๊ฐ์ ๋ณ๋ ๊ฐ์ฒด๊ฐ ๊ด๋ฆฌํ๋ ์ชฝ์ด ๋ ์ข์๊ฑธ๊น์?PlayerBet์ดPlayer์์ฒด๋ฅผ ๋ค๊ธฐ๋ณด๋คName๊ณผBettingAmount๋ง ๊ฐ์ง๋๋ก ๋ถ๋ฆฌํ๋ ๋ฐฉํฅ์ ์ ์ ํ์ง๋ ๊ถ๊ธํฉ๋๋ค.์ถ๊ฐ ๊ธฐ๋ฅ ๊ตฌํ๊ณผ ๋ฆฌํฉํ ๋ง์ ์ฐ์ ์์๋ ์ด๋ค ๊ธฐ์ค์ผ๋ก ์ ํด์ผํ ์ง
๋ฐฐํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๊ณผ์ ์์ ๊ธฐ์กด ์ฝ๋์ ๋ง์ ๋ถ๋ถ์ ์์ ํ์ต๋๋ค. ๊ทธ๋ฌ๋ค๋ณด๋ ๋๋ฌด ๋ง์ ๋ณ๊ฒฝ์ ์ด ์๊ธฐ๊ฒ ๋์๊ณ , ์ด๋๊น์ง ์์ ์ ํด์ผํ ์ง ๋ ๊ฑฐ๊ธฐ์ ์ด๋์๋ถํฐ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ง ํ์ด๋๊ฐ๋ ๊ฒ์ด ์กฐ๊ธ ํ๋ค์์ต๋๋ค.
๊ทธ๋ฌ๋ค๋ณด๋ ์ด๋ฐ ์๋ฌธ์ด ์๊ฒผ์ต๋๋ค
๋ ์ค ์ฐ์ ๋๋ ๋ฐฉํฅ์ด ์์๊น์? ๋๋ ๋ ๋ฐฉ์ ์ค ์ ํํ ๋ ์ฐธ๊ณ ํ ๋งํ ๊ธฐ์ค์ด ์์๊น์?
์ง๋ฌธ์ ์ํด์ ์ด๋๊น์ง ์ค์ค๋ก ๊ณ ๋ฏผํด๋ณด์์ผ ํ๋์ง
๊ณ ๋ฏผ์ด ์์ผ๋ฉด ์ง๋ฌธ์ด ๋๋ฌด ๊ฐ๋ณ๊ณ , ๊ณ ๋ฏผ์ด ๊น์ผ๋ฉด ์คํ๋ ค ๊ผฌ๋ฆฌ ์ง๋ฌธ์ด ๊ณ์ ์๊ฒจ ์ด๊ธฐ ์๋ฌธ์ ๋ฐฉํฅ์ ์์ด๋ฒ๋ฆฌ๊ณค ํ์ต๋๋ค. ์ฌ์ค ์ด ๋ฌธ์ ๋๋ฌธ์ ๋์ฑ ์ ์ ์๋ ๋ฏธ์ ์งํ์ด ๋์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์์์ง๋ ์๋ก์ด ๊ฐ๋ ๊ณผ ์๋กญ๊ฒ ๋ณด์ด๋ ๋ฌธ์ ์ ๋ค์ ๊ฐ๋นํ๊ธฐ ์ด๋ ค์ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ฃผ๋ ธ๋ ์ด๋ฐ ์ํฉ์์ ์ง๋ฌธ์ ์ ์ ํ ๊น์ด์ ํ์ด๋ฐ์ ์ก๋ ๊ธฐ์ค์ผ๋ก ์๋ ์ง ์ฌ์ญค๋ณด๊ณ ์ถ์ต๋๋ค.