[๐ ์ฌ์ดํด2 - ๋ฏธ์ (๋ธ๋์ญ ๋ฒ ํ )] ๋ผํฐ ๋ฏธ์ ์ ์ถํฉ๋๋ค.#1123
[๐ ์ฌ์ดํด2 - ๋ฏธ์
(๋ธ๋์ญ ๋ฒ ํ
)] ๋ผํฐ ๋ฏธ์
์ ์ถํฉ๋๋ค.#1123kdongsu5509 wants to merge 137 commits intowoowacourse:kdongsu5509from
Conversation
๋๋ฌ์ ํ๋ ์ด์ด๋ฅผ ์ถ๊ฐํ์๊ณ , ๊ทธ๋ค์ ๊ณตํต ์กฐ์์ธ ์ฐธ๊ฐ์๋ฅผ ์ถ๊ฐํจ. ์ดํ ์นด๋์ ์นด๋๋ค์ ๊ด๋ฆฌํ๋ ๋ฑ์ ์ ์๋ฅผ ์ถ๊ฐํจ.
- ์ ๊ท ๋ฑ ์ ๊ณต ๊ธฐ๋ฅ ํ ์คํธ - ์นด๋ ๋ฝ๊ธฐ ๊ธฐ๋ฅ ํ ์คํธ ์ถ๊ฐ(์ ์, ์คํจ)
- ์๋ก์ด ๋ฑ ์ ๊ณต ๊ธฐ๋ฅ - ์นด๋ ์ ํ ๊ธฐ๋ฅ ์ ์ถ๊ฐํ์์ต๋๋ค.
Ace ๊ฐ ํ์ ๊ณผ ์ ์ฒด ์นด๋ ์ ์ ํฉ ๊ธฐ๋ฅ์ ์ํธ ์์กด์ฑ์ ๋๊ธฐ ๋๋ฌธ์ Ace๋ ์ ์ธํ ์นด๋ ์ ์ ํฉ์ ๊ณ์ฐํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํจ.
- add card score total sum feature - add bust discrimination feature
๋๋ฌ ์์ฑ ์ ํ์ํ ํ๋ผ๋ฏธํฐ Deck์ ์ธ์คํด์ค ์ข ๋ฅ๋ฅผ ๋ช ์ํจ
๊ณตํต ๋ก์ง์ ์ ๊ฑฐํ๊ธฐ ์ํด participant ์ถ๊ฐ
๋๋ฌ๋ง์ ๊ณ ์ ํ ์นด๋ ์ถ๊ฐ ๋ก์ง์ ์ํด ๋ณ๋์ ๋ฉ์๋๊ฐ ์ ์ธ๋์ด ์์ต๋๋ค. ์ฐจํ ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ addCard ๋ฉ์๋ ํธ์ถ ์ ํ์ฌ ์ค๊ณ์์ผ๋ก๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ UnsupportedOperationException์ ๋์ง๋ ๊ฒ์ผ๋ก override ํด๋์์ต๋๋ค
- ๋ชจ๋ ์์ ๊ฐ๊ณผ ๋ฌธ์์ด์ ํฌ์ฅํ๋ค๋ผ๋ ํ๋ก๊ทธ๋๋ฐ ์๊ตฌ ์ฌํญ๊ณผ 3๊ฐ ์ด์์ ์ธ์คํด์ค ๋ณ์๋ฅผ ๊ฐ์ง ํด๋์ค๋ฅผ ์ฐ์ง ์๋๋ค๋ผ๋ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๊ธฐ ์ํด ์ํ ํจํด ๋์
โฆroller and BlackJackGame
๋ก์ปฌ รฌยฝ์ฝ๋๋ฅผ ๋ณํฉํ์ง ์๊ณ ์งํํ ์์ ์ผ๋ก ์ธํ ์ถฉ๋ ํด๊ฒฐ
์ฐพ๊ธฐ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ธฐ ์ํด ๋ณ๊ฒฝ. ํ์ฌ๋ n=5๋ผ๋ ์กฐ๊ฑด ๋๋ฌธ์ ์ฐพ๊ธฐ ์ ์ฑ๋ฅ์ ๊ณ ๋ คํ์ง ์์์ผ๋, ์ด ๋ํ ๋ณ๊ฒฝ๊ฐ๋ฅํ ์๊ตฌ์ฌํญ์ด๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝํ๊ธฐ๋ก ๊ฒฐ์ ํจ
๋ณต์กํ ๊ด๊ณ๋ฅผ ๊ฐ์ง game state ๊ตฌ์กฐ ์ ๋ฆฌ
- ํผ๋ธ๋ฆญ ์ธํฐํ์ด์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ค์ ์์ฑํ์ฌ ๊ฐ์ฒด๋ณ ์ฑ ์์ ํ ๋์ ๋ณผ ์ ์๋๋ก ์ ๋ฆฌํ์์
echo724
left a comment
There was a problem hiding this comment.
์๋
ํ์ธ์ ๋ผํฐ!
์ผ๋จ ๋ฆฌ๋ทฐ ๊ธฐ๋ค๋ ค์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ๋น ๋ฅด๊ฒ ๋๋ฆฌ๊ณ ์ถ์๋๋ฐ ์ฃ์กํ๋ค์. ๊ทธ๋๋ ๊ธฐ๋ค๋ฆฌ์ ๋งํผ ์ข์ ํผ๋๋ฐฑ ๋จ๊ธฐ๋ ค๊ณ ๋
ธ๋ ฅํ์ต๋๋ค! ํผ๋๋ฐฑ ๋๋ฆฌ๊ธฐ ์ด์ ์, ์ผ๋จ ์ง๋ ํผ๋๋ฐฑ ๋ฐ์ ๋๋ฌด ์ ํด์ฃผ์ ๊ฒ ๊ฐ์ต๋๋ค! ๊ฒ์ ์ํ๋ฅผ ์ค์ฌ์ ์ฝ๋ ์ดํด๊ฐ ํจ์ฌ ์ฌ์์ง๊ฒ ๋์ ๋ณด์ด๋๋ผ๊ตฌ์! ์ ํ์ตํ์๊ณ ์ ์ฉํ์ ๋ถ๋ถ์ธ ๊ฒ ๊ฐ์ ๋ณด์
๋๋ค ใ
ใ
์ปค๋ฉํธ ์ธ์๋ ์ ๋ฐ์ ์ธ ํผ๋๋ฐฑ์ ๋๋ฆฌ์๋ฉด, ์๋ ๋ถ๋ถ์ ์ข ๋ ์ ๊ฒฝ ์จ๋ณด์๋ฉด ์ฑ์ฅ์ ๋์์ด ๋ ๊ฒ ๊ฐ์์ ๋จ๊น๋๋ค.
-
์บก์ํ: ๊ฐ์ฒด๊ฐ ์ด๋ค ์ํ(๊ฐ)๋ค์ ๊ฐ๊ณ ์๋์ง ํ์ ํด๋ณด์๊ณ , ํด๋น ๊ฐ์ฒด์์ ๊ฐ์ ๋นผ์ค๊ธฐ ๋ณด๋ค๋ ๊ฐ๊ณ ์๋ ๊ฐ๋ค๋ก ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํด์ค๋ ์์ผ๋ก ์ค๊ณํด๋ณด์๋ฉด ์ข์๋ฏ ํฉ๋๋ค. ๊ฐ์ฒด ๋ด๋ถ์ ๊ฐ์ด ๋๋ถ๋ถ ์๋๋ฐ, ๊ฐ์ฒด ์ธ๋ถ๋ก ๊บผ๋ด์ ๋ค์ ์ฃผ์ ํ๋ ํํ์ ์ฝ๋๊ฐ ์ข ์ข ๋ณด์ด๋๋ผ๊ตฌ์. (ex MultiPlayers). ์ด ๋ถ๋ถ ์ ๊ฒฝ์จ์ ๋ด๋ณด์๋ฉด ๊ฐ์ฒด์งํฅ์ ๋ง๋ ์ฝ๋, ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฒด์งํฅ์ด ์๋๋๋ผ๋ ์ ์ง ๋ณด์/๊ฐ๋ ์ฑ ์ข์ ์ฝ๋๋ฅผ ์ง๋๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
-
๋ฐ์ดํฐ ์ผ๊ด์ฑ ๊ณ ๋ ค: ํ์ฌ ๋ง์ ๋ถ๋ถ์์ ํน์ ์ํ์ ๊ฐ์ฒด(e.g. Player)๋ฅผ ์ฐพ๋ ๊ณผ์ ์์ ์คํธ๋ฆผ ์ํ๋ฅผ ํด์ ๊ฐ์ฅ ์ฒซ ๋ฒ์งธ ๊ฐ์ฒด๋ฅผ ์ฐพ๊ณ ์๋๋ผ๊ตฌ์. ํ ๋ฒ ์ํํด์ ์ฐพ์ ๊ฐ์ด ๋ค์ ํ ๋ฒ ์ํํด์ ์ฐพ์ ๋ ๋ฆฌํด๊ฐ๊ณผ ์ผ์นํ๋ค๊ณ ๋ณด์ฅํ ์ ์์๊น์? ํ์ฌ๋ ์ฑ๋ฅ์ ๋ฌธ์ ๊ฐ ์์ ๋ฟ๋๋ฌ, ๋ค์ค ์ฌ์ฉ์๋ ๋ค์ค ๊ฒ์ ์คํ ์๊ตฌ์ฌํญ์ด ์๊ธธ ๊ฒฝ์ฐ ๋์์ฑ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ ์ฝ๋์ ๋๋ค. ํน์ ์ด๋ฐ ํจํด์ผ๋ก ์์ฑํ์ ๊ตฌ์ฒด์ ์ธ ์ด์ ๊ฐ ์์๊น์? ์๋ค๋ฉด ๊ณต์ ํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค! ๋ง์ฝ ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ฐ์๊ฐ๋ฅํ ๋ฌธ์ ์ ๋ํด์ ๊ณ ๋ฏผํด๋ณด์๊ณ ํ์ตํด๋ณด์๋ฉด ๋์์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค!
์ด ๋ถ๋ถ๋ค ๋น ๋ฅด๊ฒ ์์ ํด๋ณด์๊ณ ๋ฆฌ๋ทฐ ์์ฒญ ๋ค์ ํด์ฃผ์ธ์! ํ์ดํ ์ ๋๋ค~
| while (game.whoseBettingTurn().isPresent()) { | ||
| Player currentPlayer = game.whoseBettingTurn().get(); |
There was a problem hiding this comment.
์ด ๋ถ๋ถ ์ง๋ ๋ฆฌ๋ทฐ์๋ ๋จ๊ฒผ๋๋ฐ, ํน์ ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์์๊น์? whoseBettingTurn ๋ด๋ถ์ ์ผ๋ก ๋ฆฌ์คํธ๋ฅผ ์ํํ๋ ๊ตฌ์กฐ์ธ๋ฐ, ์ด๋ ๊ฒ ๋ ๋ฒ ํธ์ถ ๋ ๊ฒฝ์ฐ ๋ฌธ์ ๋ ์์๊น์? ์ฑ๋ฅ ๋ฌธ์ ๋, ๋์์ฑ ๋ฌธ์ ๋ ์์ ๊ฒ ๊ฐ์๋ฐ ์๊ฐํด๋ณด์๋ฉด ํ์ต์ ๋์์ด ๋ ๋ฏ ํฉ๋๋ค!
There was a problem hiding this comment.
์กฐํํ๋ ์์ ๊ณผ ์ค์ ์ฌ์ฉํ๊ฒ ๋๋ ์์ ์ด ๋ฌ๋ผ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค๋ ์ ์ ์ดํดํ๊ฒ ๋์์ต๋๋ค! ๊ฐ์ฌํฉ๋๋ค!
There was a problem hiding this comment.
์ฐ์ game.whoseBettingTurn() ์ ํ ๋ฒ๋ง ํธ์ถํ ๋ค, ๋น์ด์์ผ๋ฉด break ๋ฅผ ํธ์ถํ๋๋ก ๋ณ๊ฒฝํ์์ต๋๋ค.
There was a problem hiding this comment.
๊ทธ ๋ค์์ผ๋ก ๋ด๋ถ์ ์ผ๋ก Queue<String> ๋ฅผ ๋์ด ์์ง ๋ฒ ํ
์ ํ์ง ์์ ์ฌ๋๋ง์ ๊ด๋ฆฌํ๋๋ก ๋ณ๊ฒฝํ์์ต๋๋ค.
| while (game.whoseBettingTurn().isPresent()) { | ||
| Player currentPlayer = game.whoseBettingTurn().get(); | ||
| outputView.printBetAmountPrompt(currentPlayer.getName()); | ||
| String betAmountValue = retry(inputView::readBetAmountValue); |
There was a problem hiding this comment.
retry ์ฌํ์ฉ ๊ตณ์ ๋๋ค! ์ ์ง์ จ๋ค์ ใ ใ
| Player target = multiPlayers.findNotBetPlayer() | ||
| .orElseThrow(() -> new IllegalStateException(ErrorMessage.NO_MORE_BETTABLE_PLAYER.getMessage())); | ||
| multiPlayers.executeBet(target, betAmountValue); |
There was a problem hiding this comment.
์ด ๋ถ๋ถ ์ด์ฐจํผ multiPlayers์๊ฒ player๋ฅผ ์ฐพ์์ betAmountValue์ ํจ๊ป ๋ค์ multiPlayers์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ํํ๋ผ๋ฉด, ๊ทธ๋ฅ executeBet ๋ฉ์๋๋ง ํธ์ถํ๊ณ ๋ฉ์๋ ๋ด๋ถ์์ target์ ์ฐพ์ผ๋ฉด ๋์ง ์์๊น์? ์ธ๋ถ๋ก ๊ฐ์ ๋นผ์ฌ ๋๋ ๋นผ์์ผ๋ง ํ๋ ๊ตฌ์ฒด์ ์ธ ์ด์ ๊ฐ ์์ด์ผํฉ๋๋ค. (ํธ์ถ์์๊ฒ ๋ฐ๋์ ํ์ํ๋ค๋๊ฐ, ๋ทฐ์์ ํ์๋ก ํ๋ค๋๊ฐ) ์๊ทธ๋ฌ๋ฉด ์บก์ํ๋ ๊นจ์ง๊ณ , ์์ง๋๋ ์ค์ด๋ค๊ฒ ์ฃ ?
There was a problem hiding this comment.
์ด ๋ถ๋ถ์ ๋ํ ๊ฒ์ ๋จธ๋ฆฌ๋ก๋ ์ดํดํ๊ณ ์์๋๋ฐ, ์ฝ๋์์ ์ฐพ๊ธฐ๊ฐ ์ฐธ ํ๋๋ค์๐ ์์ ํ๊ฒ ์ต๋๋ค!!
| } | ||
|
|
||
| public void doBetProcess(String betAmountValue) { | ||
| Player target = multiPlayers.findNotBetPlayer() |
There was a problem hiding this comment.
๊ทผ๋ฐ ์๋ ์ปค๋ฉํธ๋ณด๋ค ์ข ์ค์ํ๊ฒ ๋ณผ ๋ถ๋ถ์ ์ด ๋ถ๋ถ์ธ๋ฐ์, ์ด๋ป๊ฒ ํน์ ํ๋ ์ด์ด๊ฒ ์ ๋ ฅ๋ฐ์ betAmountValue๊ฐ ์ฌ๊ธฐ์ ์ฐพ์ target์ bet์ธ์ง ์ด๋ป๊ฒ ํ์ ํ ์ ์์ฃ ? ๋ง์ฝ ์ ๋ ฅํ ํ๋ ์ด์ด์ ๋ค๋ฅธ ํ๋ ์ด์ด๊ฐ ์ฌ๊ธฐ์ ์ฐพ์์ง๋ฉด ์ด๋ป๊ฒ ํ์ฃ ?
There was a problem hiding this comment.
์ผ๋จ ๋ ๊ฒ์ด๋ผ๋ ์๊ฐ์ ํ๊ณ ์์ฑํ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฏธ whoseTurn ๋ฉ์๋์์ Player ๊ฐ ๋
ธ์ถ๋ ๋งํผ Player ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ์์ผ๋ก ์ ๋ฌํ๋ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ๊ฒ ์ต๋๋ค.
ํด๋น ๋ถ๋ถ์์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ค์ผ ์ ์์ด์ ์ ์ฉํ๋๋ฐ, ๋ฌธ์ ์ํฉ์ ๊ณ ๋ คํ์ง ๋ชปํ ๊ฒ ๊ฐ์ต๋๋ค.
| public String readBetAmountValue() { | ||
| String line = sc.nextLine(); | ||
| validateIsBlank(line); | ||
| return line; | ||
| } |
There was a problem hiding this comment.
์ด ๋ถ๋ถ์์ betAmount๋ฅผ String Type์ผ๋ก ๋ฐํํ๊ณ ํด๋น ๊ฐ์ Game์์๋ถํฐ Player๊น์ง ๋๊ธด ํ์์ผ BetAmount์ ๋ํ ๊ฐ ๊ฒ์ฆ์ด ์ด๋ฃจ์ด์ง๋๋ฐ์, ๋ง์ฝ BetAmount ๊ฐ์ด ์๋ชป ๋์์ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋ ๊น์? ์ ๋ ฅ ๋จ๊ณผ ๊ฐ๊น์ด ๊ณณ์์ ๊ฐ ๊ฒ์ฆ์ด ์ด๋ฃจ์ด์ ธ์ผํ์ง ์์๊น์? retry๋ ๋์ด์๋๋ฐ ์ฌ์ค ๊ฒ์ฆ์ด ์ ๋ ฅ๋จ์์ ์ด๋ฃจ์ด์ง๋ฉด betAmount ๊ฐ์ด ์๋ชป๋๋ ์ ์ ๋ ๋ฆฌํธ๋ผ์ด๊ฐ ๊ฐ๋ฅํ๊ฒ ์ฃ ? ๊ทธ๋์ ์ด ๋ถ๋ถ ๋ฆฌํด๊ฐ์ BetAmount๋ก ํ๋ ๊ฒ์ ์ด๋จ๊น์? ๋ฌธ์ ๊ฐ ์์๊น์?
There was a problem hiding this comment.
์ด๋ ๊ฒ ๋๋ ๊ฒฝ์ฐ View ๊ณ์ธต์์ Domain ๊ณ์ธต์ ์๊ฒ ๋๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค๊ณ ํ๋จํ์ต๋๋ค! ์ ์ถฉ์(?)์ผ๋ก ์ ์ ํ ์ง ๋ชจ๋ฅด๊ฒ ์ผ๋, ๋น์ฆ๋์ค ๋ก์ง์ธ ์์ ์ด์ด์ผ ํจ์ BetAmount ์์ ๊ฒ์ฆํ๋ ๊ฒ์ผ๋ก ํ๊ณ InputView ์์๋ ์ ์ ๊ฒ์ฆ์ ํ๋ ๊ฒ์ ์ด๋ป๊ฒ ์๊ฐํ์๋ ์ง ๊ถ๊ธํฉ๋๋ค. ์ฐ์ ๊ฒ์ฆ์ ๊ตฌ๋ถ์ด๋ผ๋ ๋ฐฉํฅ์ผ๋ก ์ก๊ณ ์์ ํด๋ณด๊ฒ ์ต๋๋ค
| validateIsBlank(input); | ||
| validateHitOrStandValue(input); | ||
| return input; | ||
| return input.equals("y"); |
There was a problem hiding this comment.
"y"๊ฐ ์ค๋ณตํด์ ์ฝ๋์ ๋ฑ์ฅํ๋ ๊ตฐ์? ํน์ ์ด ๋ถ๋ถ ๋ฌธ์๊ฐ y๊ฐ ์๋ yes๋ก ๋ณ๊ฒฝ๋๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๊ทธ๋ฌ๋ฉด HIT_OR_STAND ๊ฐ๋ ๊ฐ์ด ๋ฐ๊ฟ์ค์ผํ์ฃ ?
There was a problem hiding this comment.
๊ธฐ๋ณธ์ ์ธ ์ค์๋ฅผ ํ์๋ค์ ๐
static ๋ณ์๋ก์ ๋์
๋ฐ ์ค๋ณต ์ ๊ฑฐ ํ๊ฒ ์ต๋๋ค!!
| import java.util.List; | ||
| import java.util.function.Supplier; | ||
|
|
||
| public interface GameState { |
There was a problem hiding this comment.
์ด ๋ถ๋ถ ํผ๋๋ฐฑ ๋ฐ์ ์ํด์ฃผ์ จ๋ค์! ํ์คํ ์ํ์ ์๊ฐ ์ค์ด๋๋ ์ฝ๋ ์ฝ๊ธฐ๊ฐ ํจ์ฌ ํธํด์ก์ต๋๋ค. ๊ฐ๋ ์ฑ์ด ์ข๋ค๋ ์๋ฏธ๋ ์ฝ๋ ์ ์ง ๋ณด์์ฑ๋ ์ข์์ง๋ค๋ ์๋ฏธ์ด๊ธฐ๋ ํฉ๋๋ค. ์ฝ๋๋ฅผ ์งค๋๋ ๋ชจ๋ ์ปจํ ์คํธ๊ฐ ๋จธ๋ฆฌ์ ์์ด์ ์ดํด๊ฐ ์ฝ์ง๋ง, ๋ค๋ฅธ ํ๋ก์ ํธ๋ ํ๊ณ ์ด๋ฆฌ์ ๋ฆฌ ์๊ฐ์ด ์ง๋๋ฉด ์ฝ๋๋ฅผ ์์ฑํ๋ ์ปจํ ์คํธ๋ ๋ณ๋ก ๋จ์ง ์์์ ๊ฒฐ๊ตญ์๋ ๊ฐ๋ ์ฑ์ด ์ค์ํด์ง๋๋ผ๊ตฌ์.
There was a problem hiding this comment.
๋ฆฌ๋ทฐ์ด๋์ ์ด์ ๋ฆฌ๋ทฐ๋ฅผ ํตํด ์ ๋ ์ฝ์ด๋ณด๋ ํ์คํ ํธํด์ง์ ๋๋ ์ ์์ด์ ์ข์๋ ๊ฒ ๊ฐ์ต๋๋ค!!
| public Dealer addCard(Supplier<Card> cardSupplier) { | ||
| GameState newGameState = gameState.hit(cardSupplier); | ||
| return Dealer.from(newGameState); | ||
| if (gameState.getCardsSum() <= DEALER_CARD_SUM_MIN) { | ||
| GameState newGameState = gameState.hit(cardSupplier); | ||
| return Dealer.from(newGameState); | ||
| } | ||
| GameState stayGameState = gameState.stay(); | ||
| return Dealer.from(stayGameState); | ||
| } |
There was a problem hiding this comment.
์ง๋ ๋ฆฌ๋ทฐ์์ ๋์น๊ธด ํ๋๋ฐ, Dealer ํ์
์ด ๋ถ๋ณ์ผ ํ์๊ฐ ์์๊น์? ์ ํธ์ ์์ญ์ด๊ธฐ๋ ํ๋ฐ, ์ ๊ฐ ์ด์ํ๋ค๊ณ ์๊ฐํ๋ ๋ถ๋ถ์ Game์ ๊ฒฝ์ฐ, ์ํ๋ก Dealer๋ฅผ ๊ฐ๊ณ ์์ด์, Dealer๋ฅผ ๋ถ๋ณ์ผ๋ก ํ๋ ๊ฒฝ์ฐ this.dealer = newDealer ์ด๋ถ๋ถ์ ๋ฐ๋์ ํด์ค์ผํ๋๋ฐ, ์ด ๋ถ๋ถ์ ์ค์๋ก ๋์น ๊ฒฝ์ฐ๊ฐ ์ข
์ข
์๋ค๊ณ ์๊ฐํฉ๋๋ค (์ค์ ๋ก ๊ทธ๋ฐ ์ ๋ ๋ช ๋ฒ ๋ดค๊ตฌ์) ๊ทธ๋์ Dealer๊ฐ ์ด๋ฆฌ์ ๋ฆฌ ์ฌ๋ฌ ๊ตฐ๋ฐ ์ฌ์ฉ๋๋ ๊ฐ ๊ฐ์ฒด๊ฐ ์๋๊ณ ๋ค๋ฅธ ๊ฐ์ฒด์ ์ํ๋ก ๊ด๋ฆฌ๋๋ ๊ฒฝ์ฐ๋ผ๋ฉด ๊ฐ๋ณ์ ๊ณ ๋ คํด๋ณผ ๊ฒ ๊ฐ์์. ์ด๋ป๊ฒ ์๊ฐํ์๋์?
There was a problem hiding this comment.
์ด๋ฒ ์ฌ์ดํด 2์ ํ ๋ก ํ๋์ ๊ฒฐ๊ณผ๋ฌผ๋ก ๋ถ๋ณ ๊ฐ์ฒด๋ง ์ฌ์ฉํ๋ค ๋ผ๋ ์กฐ๊ฑด์ด ์์ด์ ํด๋น ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ์์ต๋๋ค.
์ด ๊ณผ์ ์์ ๋ฆฌ๋ทฐ์ด๋์ด ๋จ๊ฒจ์ฃผ์
จ๋ ๋ฌธ์ ์ญ์ ๊ฒฝํํ์ฌ์ ๋ฆฌ๋ทฐ์ด๋์ ์๊ฒฌ์ ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค!! ์ด๋ฐ ๋ฐฉ์์ ์ฌ์ฉํ๋, ๊ฒฐ๊ตญ ์ค๊ฐ์ ๋ถ๋ณ ๊ฐ์ฒด์ ์ฌ์ฉ์ ๋์ด๋ด์ผ ํ๋ ๋ถ๋ถ์ด ์กด์ฌํ์๊ณ , ์ ๋ ์ด ๋ถ๋ถ์์ ์ฐ์ BlackJackGame ์์ Dealer ๋ถ๋ณ ๊ฐ์ฒด์ ์ ํ๋ฅผ ๋์๊ณ , MultiPlayers ์์ Players ์ ์ํ๋ฅผ ํ๋ฆ ์ ์ด ๋ผ๋ ์ด์ ๋ก ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ์ํ๋ก ๊ด๋ฆฌ๋๋ ๊ฒฝ์ฐ ์๋ ๋ถ๋ณ ์ํ๋ก ์ธํ์ฌ ๋ค๋ฅธ ๊ฐ์ฒด๋ ๋ถ๋ณ์ด ๋์ด์ผ ํ๋ ํ์์ ์ ํ๋ฅผ ์ค๊ฐ์ ๋์ ์ ์๋ ์ข์ ์กฐ๊ฑด์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค!
There was a problem hiding this comment.
๋ณ๊ฒฝ์ ์ํด ์ฝ๋๋ฅผ ์ฌ๊ฒํ ํด๋ณด๋, Player์ Dealer์ ๊ณตํต ๋ถ๋ชจ์ธ Participant์์ Hand๋ฅผ ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค. ๋ฆฌ๋ทฐ์ด๋ ๋ง์๋๋ก Dealer๋ฅผ ์ํ ๋ณํ๊ฐ ๊ฐ๋ฅํ ๊ฐ์ฒด๋ก ๋๋๋ผ๋, ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ Hand๋ ์ฌ์ ํ ๋ถ๋ณ ๊ฐ์ฒด๋ก ์ ์งํ๋ ๊ฒ์ด ์์ ํ๋ค๊ณ ํ๋จ๋ฉ๋๋ค.
๋ง์ฝ ์ฌ๊ธฐ์ Hand์ ์ฑ๊ฒฉ์ ๋ถ๋ฆฌํ๊ฒ ๋๋ฉด DealerHand์ ๊ฐ์ ๋ณ๋์ ๊ตฌํ์ฒด๊ฐ ํ์ํด์ง๋๋ฐ, ์ด๋ ์คํ๋ ค ์์์ ํตํ ๊ตฌ์กฐ์ ์ด์ ์ ์๊ฒ ๋์ด ํ์ฌ์ฒ๋ผ Participant๊ฐ ๋ถ๋ณ Hand๋ฅผ ๋ณด์ ํ๋ ๊ตฌ์กฐ๊ฐ ๊ฐ์ฅ ์ ํฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Dealer๋ ์ฐ์ ์ ๋ถ๋ณ ๊ฐ์ฒด๋ก ๋๋ ๊ฒ์ด ๋ ๋ซ๋ค๊ณ ์๊ฐํฉ๋๋ค!
There was a problem hiding this comment.
๊ทธ๋ ๊ตฐ์! ์ค๊ณ์ ๋ํ ์ ์ ํ ์ด์ ์ ๊ณ ๋ฏผ์ด ์๋ค๋ฉด, ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฑธ ๋ง๋ก ์ ์ค๋ํ ์ ์๋ค๋ฉด ์ ๋ ์ ์ค๊ณ ํ์ จ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํนํ ๋ถ๋ณ ๊ฐ์ฒด๋ฅผ ์ ํํ๋๋ฐ ์์ด์๋ ์ฅ๋จ์ ๊ณผ ์ํฉ ๊ณ ๋ ค๋ฅผ ์ ํด๋ณด์ จ์ผ๋ฉด ํฉ๋๋ค!
| public static PlayerResultDto from(Player player, Dealer dealer) { | ||
| GameResult gameResult = player.calculateGameResult(dealer); | ||
| double earnMoney = gameResult.getAllocation() * player.getBetAmount(); |
There was a problem hiding this comment.
DTO์ธ๋ฐ ๊ฒ์ ๊ณ์ฐ/๊ฒฐ๊ณผ ๋์ถ ๋ก์ง์ด ์ด ๋ถ๋ถ์ ์๊ตฐ์? ํธ์ถ์ ์ ์ฅ์์๋ DTO ์์ฑ ๋ก์ง์ธ์ค ์๊ณ ์์ํ ๋ฐ, ์๋์น ์์ ํ์๋ผ๊ณ ์๊ฐํ์ง ์์๊น์?
There was a problem hiding this comment.
earnMoney ๊ณ์ฐ ํ๋ ๋ถ๋ถ calculateGameResult ๋ฉ์๋ ๋ด๋ถ์์ ์ฒ๋ฆฌํ ์ ์์ง ์์๊น์?
| } | ||
|
|
||
| @Test | ||
| @DisplayName("๋ฒ ํ ์ ์ํ ์ฌ์ฉ์๊ฐ ์์ผ๋ฉด ์ ๊ณตํ๋ค") |
There was a problem hiding this comment.
์ ๊ฐ ๋์น ๊ฒ์ผ ์ ๋ ์๋๋ฐ ํต์ฌ์ธ ๋ฒ ํ ๊ณ์ฐ ๋ก์ง ํ ์คํธ๊ฐ ์๋ณด์ด๋ค์? ํด๋น ํ ์คํธ๋ ๋ฐ๋์ ํ์ํด ๋ณด์ด๋๋ฐ ์ด๋ป๊ฒ ์๊ฐํ์๋์?
There was a problem hiding this comment.
์ ๋ ๋ฆฌ๋ทฐ์ด๋์ ์๊ฒฌ์ ๋์ํฉ๋๋ค.
์ด๋ฌํ ๊ณ์ฐ ๋ก์ง์ด PlayerResultDto ์ ์กด์ฌํ๊ฒ ๋์ด ํ
์คํธ ๊ณผ์ ์ด ๋๋ฝ๋๊ฒ ๋ ๊ฒ ๊ฐ์ต๋๋ค. dto ์ด๊ธฐ ๋๋ฌธ์ ํ
์คํธ ํ ํ์ ์๋ค๊ณ ์๊ฐํ์๋๋ฐ, dto์ ๋น์ฆ๋์ค(?) ๋ก์ง์ด ๋ค์ด๊ฐ๊ฒ ๋๋ฉด์ ์ ๋ฐ์ ์ผ๋ก ๋๋ฝ๋ ๊ฒ ๊ฐ์ต๋๋ค
"y"๊ฐ ํ๋์ฝ๋ฉ๋์ด ์๋ ๊ฒ์ ์ ๊ฑฐ. ์ถ๊ฐ์ ์ผ๋ก HitOrStand์ ์ค๋ณต๋ ๊ฐ์ด์ด์ ๋ณ์ํ ์งํ
dto์ ๋ค์ด๊ฐ์๋ ๊ฒฐ๊ณผ ๋ก์ง์ ์ ๊ฑฐ. ์ดํ ๊ณต๊ฐ๊ฐ ๋ถํ์ํด์ง calculateGameResult๋ฅผ private ์ผ๋ก ์ ํ
์ฌ์ฉ์๊ฐ ์์ ์ ์๊ฐ ์๋ ๊ฐ์ ์ ๋ ฅํ๋ ๊ฒ์ ์ ๋ ฅ ๋จ๊ณ์์ ํ์ ํ ์ ์๋๋ก ๋ณ๊ฒฝํ์ฌ ๋ถํ์ํ ๋ฆฌ์์ค ๋ญ๋น๋ฅผ ์ ๊ฑฐ
Scanner ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๊ต์ฒด
- `Player` ๋ฅผ ์ ๋ฌํจ์ผ๋ก์จ `Player` ๋ถ์ ํฉ ๊ฐ๋ฅ์ฑ ๋ฐฐ์ .
- `์กฐํ` ์ `๋ช
๋ น`์ ๋ถ๋ฆฌ์ ๋ฐ๋ฅธ ๋์์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ํด๊ฒฐ
- `MultiPlayers`์ ์์ง๋๊ฐ ๋ฎ์ ๋ถ๋ถ ์์ ('BlackJackGame' ์ ์ฝ๋ ์ ๊ฑฐ ํ ์ถ๊ฐ)
|
๋ฆฌ๋ทฐ์ด๋์ด ์ฃผ์ ์บก์ํ์ ๊ฐ๋ ์ ๋ถ๋ช ํ ์๊ฒ ๋์๋๋ฐ ์ด๊ฒ์ ์ ์ฝ๋์์ ์ฐพ์๋ด๋ ๊ฒ์ด ํ๋๋ค์๐ ํญ์ ์ฒ์ ์์ฑํ ๋ ์ ์์ฑํด์ผ ํจ์ ๋๋ ์ ์์์ต๋๋ค ใ ใ
์ด๋ฒ ๋ฆฌํฉํ ๋ง ๊ณผ์ ์์๋ ์ด์ ์ ์ฝ๋ฉํธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ํ๋ฅผ ํ์ง ์๊ณ |
๋๋ฌ์ ํฉ์ด 16์ด์์ผ ๋์๋ ์นด๋ ์ถ๊ฐ ๋ก์ง์ด ์๋ํ์ฌ ์ค๋ฅ๊ฐ ๋ฐ์. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด isDealerFull ๋ฐ ๋ฐฉ์ด ๋ก์ง ์ถ๊ฐ
echo724
left a comment
There was a problem hiding this comment.
์๋ ํ์ธ์ ๋ผํฐ! ๋น ๋ฅด๊ฒ ํผ๋๋ฐฑ ๋ฐ์ํด์ฃผ์ จ๋ค์! ์ด๋ฒ์ ์ ๊ฐ ๋์ก๋ ์ง๋ฌธ์ ๊ณ ๋ฏผ๋ ํด๋ณด์๊ณ ์ค์ ๋ก ๋ฐ์๋ ์ ํด๋ณด์ ๊ฒ ๊ฐ์ต๋๋ค! ์ค๊ณ ์ด์ ์ ๋ํด ๊ณ ๋ฏผํ๊ณ ๋ ๊ทธ๊ฑธ ์ค๋ช ํ๋ ๊ณผ์ ์์ฒด๊ฐ ์ค๊ณ ์ญ๋์ ๊ธฐ๋ฅด๊ณ ํ์ ํ๋๋ฐ ์์ด์ ๋ง์ ๋์์ด ๋ ๊ฑฐ์์! ํ์ดํ ์ ๋๋ค!
์ด๋ฒ์ ์ปค๋ฉํธ๋ก๋ ์๋ก ์ถ๊ฐํ์ ํ ๋ถ๋ถ์ ๋ฌ์๋๋ฐ์, ์ ๊ฐ ์ ๋ฒ์ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ๋ ๋ถ๋ถ์ List ๊ทธ ์์ฒด์ ๋ฌธ์ ๋ผ๊ธฐ ๋ณด๋ค๋ ๊ฐ์ ๊ฐ์ ์ฐพ๋๋ฐ List๋ฅผ ๋ ๋ฒ ์ํํ๋ ๊ฒ์ด ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค๋ ๊ฒ์ ์๋ ค๋๋ฆฌ๊ณ ์ถ์์ต๋๋ค. ํน์๋ ์ด ๋ถ๋ถ ์คํด๊ฐ ์์์๊น๋ด ๋ค์ ์๋ ค๋๋ ธ์ด์! (์๋๋ผ๋ฉด ๋ฌด์ํด์ฃผ์ธ์ ใ ใ ) ๊ทธ๋์ ๊ธฐ์ค์ Player๋ฅผ ์ํํ๋ฉด์ ๊ฐ ํ๋ ์ด์ด์๊ฒ ๋ฒ ํ ์ด ๊ฐ๋ฅํ์ง, ํ๋ ์ด๊ฐ ๊ฐ๋ฅํ์ง ๋ฌผ์ด๋ณด๋ ๋ก์ง์ ์์ฐ์ค๋ฌ์ ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์คํ๋ ค ๋ด๋ถ์ ์ผ๋ก ๋ ๊ฐ์ ํ๋ฅผ ์ถ๊ฐ๋ก ๊ด๋ฆฌํจ์ผ๋ก์จ ์ค๋ ๋น์ฉ์ด ๋ ํด ๊ฒ ๊ฐ์๋ฐ์, ์ด ๋ถ๋ถ ์ด๋ป๊ฒ ์๊ฐํ์๋์?!
์ถ๊ฐ๋ก ์ปค๋ฉํธ ๋จ ๋ถ๋ถ๋ ํ์ธํด์ฃผ์๊ณ ๋ค์ ์์ฒญ ๋ณด๋ด์ฃผ์ธ์~
| while (true) { | ||
| Optional<Player> player = game.whoseBettingTurn(); | ||
| if (player.isEmpty()) { | ||
| break; | ||
| } | ||
| Player currentPlayer = player.get(); |
There was a problem hiding this comment.
ใ ใ ํผ๋๋ฐฑ ๋ฐ์ ์ ํ์ จ๋ค์. ์ด๋ ๊ฒ ํ๋ฉด ์ฑ๋ฅ ์ด์๋, ๋์์ฑ ์ด์ ๋ ์๊ฒ ์ฃ ? ์ ๊ฐ ์ข ์ด ๋ถ๋ถ์ ์ ๊ฒฝ ์ด ๋ถ๋ถ์ ํ์ฌ ๋ฏธ์ ์์๋ ๊ด์ฐฎ์ง๋ง ๋์ค์ ๋ฏธ์ + ์น ์๋น์ค ํ๊ฒฝ์์๋ ํ๋ก๊ทธ๋จ์ด ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ๋์๊ฐ๊ธฐ ๋๋ฌธ์ ์ ๋ฐ ๋ถ๋ถ์ ์ฝ๊ฒ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค. ๋ฉํฐ ์ค๋ ๋์ด๋ค๋ณด๋ ํ ์คํธ๋ก๋ ์์กํ๋ ๊ฒฝ์ฐ๊ฐ ์์ด์ ์ ๋ฐ ๋ถ๋ถ์ ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ๊ณ ๋ฏผ ํด๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค.
| private final Queue<String> notBettingPlayers; | ||
| private final Queue<String> playablePlayers; |
There was a problem hiding this comment.
์ ์ด๋ ๊ฒ ํ๋ก ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉํฅ์ผ๋ก ๋ฐ๊ผ๊ตฐ์.. ์ ์ ํ๋ ์ด์ด์๊ฒ ์ํ๋ฅผ ๋ฌผ์ด๋ณด๋ ๋ฐฉ์์ผ๋ก ๋ค์ ํ๋ ์ด์ด๋ฅผ ์ฐพ๋ ๋ฐฉ์์ด์๋๊ฒ ๊ฐ์๋ฐ ๋ง๋์? ๊ทธ ๋ถ๋ถ์ ๊ด์ฐฎ์๋๋ฐ ํน์ ์ด๋ ๊ฒ ํ๋ก ๊ด๋ฆฌํ๋ ค๋ ๊ตฌ์ฒด์ ์ธ ์ด์ ๊ฐ ์์๊น์? ์ ๊ธฐ์ค์์๋ players๊ฐ ์ด๋ฏธ ๊ฐ๊ณ ์๋ ์ ๋ณด๋ฅผ ๋ ๊ด๋ฆฌํ๋ ๋๋์ด๊ณ ์ฝ๋๊ฐ ๊ทธ ๋งํผ ๋ณต์กํด ์ง ๊ฒ ๊ฐ์์ ใ
| // public Optional<Player> findNotBetPlayer() { | ||
| // return players.values().stream() | ||
| // .filter(player -> !player.isBet()) | ||
| // .findFirst(); | ||
| // } |
There was a problem hiding this comment.
์์ฐ๋ ์ฝ๋๋ ๊ผญ ์ง์์ฃผ์ธ์!
| public int readBetAmountValue() { | ||
| int betValue = sc.nextInt(); | ||
| sc.nextLine(); | ||
| return betValue; | ||
| } |
There was a problem hiding this comment.
์๋ง๋ BetAmount์ ๊ฒ์ฆ ์์น๋ฅผ ์ค์ด๋ ๋ฐฉ์์ InputView์์ BetAmount๋ฅผ ์์ฑํด์ ๋ฆฌํดํ๋๋ก ํ๋ ๋ฐฉ์์ธ๋ฐ์, BetAmount์ ๊ฒฝ์ฐ ๋ฑํ ๋น์ง๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ์ง ์๊ณ ์๊ณ , ๋ํ int๊ฐ์ด BetAmount๋ก๋ง ์ฌ์ฉ ๋๋ ๊ฒ ๊ฐ์๋ฐ ๊ด์ฐฎ์ง ์์๊น์?
| public Dealer addCard(Supplier<Card> cardSupplier) { | ||
| GameState newGameState = gameState.hit(cardSupplier); | ||
| return Dealer.from(newGameState); | ||
| if (gameState.getCardsSum() <= DEALER_CARD_SUM_MIN) { | ||
| GameState newGameState = gameState.hit(cardSupplier); | ||
| return Dealer.from(newGameState); | ||
| } | ||
| GameState stayGameState = gameState.stay(); | ||
| return Dealer.from(stayGameState); | ||
| } |
There was a problem hiding this comment.
๊ทธ๋ ๊ตฐ์! ์ค๊ณ์ ๋ํ ์ ์ ํ ์ด์ ์ ๊ณ ๋ฏผ์ด ์๋ค๋ฉด, ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฑธ ๋ง๋ก ์ ์ค๋ํ ์ ์๋ค๋ฉด ์ ๋ ์ ์ค๊ณ ํ์ จ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํนํ ๋ถ๋ณ ๊ฐ์ฒด๋ฅผ ์ ํํ๋๋ฐ ์์ด์๋ ์ฅ๋จ์ ๊ณผ ์ํฉ ๊ณ ๋ ค๋ฅผ ์ ํด๋ณด์ จ์ผ๋ฉด ํฉ๋๋ค!
์ฒดํฌ ๋ฆฌ์คํธ
test๋ฅผ ์คํํ์ ๋, ๋ชจ๋ ํ ์คํธ๊ฐ ์ ์์ ์ผ๋ก ํต๊ณผํ๋์?์ด๋ค ๋ถ๋ถ์ ์ง์คํ์ฌ ๋ฆฌ๋ทฐํด์ผ ํ ๊น์?
์ด๋ฒ์ ์ถ๊ฐํ๊ฒ ๋
BetAmount๋๋ฉ์ธ์Player๊ฐ์ฒด๊ฐ ๊ด๋ฆฌํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ ํฉํ๋ค๊ณ ํ๋จํ์ฌ 3๊ฐ ์ด์์ ์ธ์คํด์ ๋ณ์๋ฅผ ์์ฑํ์ง ๋ง๋ผ๋ ์ ํ ์กฐ๊ฑด์ ์ด๊ธฐ๋ฉด์ ์๋ํด๋ณด์์ต๋๋ค. ์ด๋ฌํ ์ ๊ทผ์ด ์ ํฉํ์ ์ง ์์ง ํ์ ์ ๊ฐ์ง์ง๋ ๋ชปํ์ฌ์ ์์ง ์ฐ์ฐํจ์ ๋๋ผ๊ณ ์์ต๋๋ค.์ด๋ฐ ์ฐ์ฐํจ์ด ๋๊ปด์ง๋ ์ฌ๋ฌ๊ฐ์ง ๋ถ๋ถ์ด ์กด์ฌํ์ง๋ง ํนํ ์ด์ ์๋
Hand์ ์ ๋ณด๋ก๋ง ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ํ๋จํ๋ฉด ๋์ด์GameState๊ฐ ๊ด๋ฆฌํ๋ ๊ฒฐ๊ณผ ๋น๊ต ๋ฉ์๋๋ฅผBetAmount์ ๋ณด๊ฐ ์ถ๊ฐ๋ก ํ์ํจ์ ๋ฐ๋ผPlayer๋ก ์์น๋ฅผ ํ๊ฒ ๋์๋ค๋ ์ ๋๋ฌธ์ ์ด์ ์ ์ฑ ์ ๋ถ๋ฐฐ๊ฐ ์๋ชป๋ ๊ฒ์ธ์ง ํน์ ํ์ฌ์ ์ฑ ์์ด ์๋ชป๋ ๊ฒ์ธ์ง ํ๋จ์ด ์ด๋ ค์ ์ ์ด ๊ฐ์ฅ ํฐ ์ด์ ์ ๋๋ค.๊ทธ ๋ค์์ ํ๋ ์ด์ด์ ์ธ์คํด์ค ๋ณ์๊ฐ ์ถ๊ฐ๋จ์ ๋ฐ๋ผ ํ๋ ์ด์ด๋ฅผ ์์ฑํ๋ ํ ์คํธ ๋ก์ง์ด ์๋น ์ ๋ณ๊ฒฝ๋๊ฒ ๋ ๊ฒ์ผ๋ก ์๊ฐํ์ฌ, ํ์ฌ์ ๋ฐฉ์์ธ
BetAmount.empty()๋ฅผ ํตํ0๊ฐ์ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ธฐ๋ณธ ์์ฑ์์,bet()๋ฉ์๋๋ฅผ ํตํด ํ๋ ์ด์ด์๊ฒ ์ ๋ ฅ๋ฐ์ ๊ธ์ก์ ๊ฐ์ง ์๋ก์ดBetAmount๋ฅผ ๋ง๋ค ์ ์๊ฒ ํ์์ต๋๋ค. ์ ๋ ํ ์คํธ ๋ณ๊ฒฝ์ ํผํ ์ ์๊ณ , ์ถ๊ฐ๋ก ๋ถ๋ณ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ๊ด์ฐฎ์ ๊ฒ์ด๋ค๋ผ๋ ํ๋จ์ ํ์ฌ์ ์๋ํด๋ณด์์ต๋๋ค.์ถ๊ฐ์ ์ผ๋ก ์ด์
step1์์ ๋ฆฌ๋ทฐ์ด๋์ด ๋จ๊ฒจ์ฃผ์ ๋ฆฌ๋ทฐ๋ฅผ ์ ๋ฐ์์ ํด๋ณด๋ ์ด๋ฒ ๋ฒ ํ ํ๊ธฐ ๊ธฐ๋ฅ ์ถ๊ฐ ์ ๊ธฐ์กด์ ํด๋์ค๋ค๊ณผ ํ๋ฆ์ ์๋นํ ํธํ๊ฒ ์ดํดํ ์ ์์์ต๋๋ค. ๐์ด ๋๋ถ์ ๊ฐ์ฒด ์งํฅ์์๋ ์ฝ๊ธฐ ์ฌ์ ์ฝ๋์ ์ค์์ฑ์ ๋์น๋ฉด ์๋๊ฒ ๋ค๋ผ๋ ์๊ฐ ์ญ์ ํ ์ ์๊ฒ ๋์ด ์ ๋ง ๊ฐ์ฌํฉ๋๋ค!