[๐ ์ฌ์ดํด2 - ๋ฏธ์ (๋ธ๋์ญ ๋ฒ ํ )] ๋ฃจ๋ ๋ฏธ์ ์ ์ถํฉ๋๋ค.#1107
[๐ ์ฌ์ดํด2 - ๋ฏธ์
(๋ธ๋์ญ ๋ฒ ํ
)] ๋ฃจ๋ ๋ฏธ์
์ ์ถํฉ๋๋ค.#1107jurlring merged 114 commits intowoowacourse:seonwu-kfrom
Conversation
jurlring
left a comment
There was a problem hiding this comment.
๋ฃจ๋ ์๋
ํ์ธ์!
์ฝ๋ฉํธ ๋ช๊ฐ์ง๋ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ ๋ฌ์๋์์ต๋๋ค!
์๊ฐ ๊ด์ฐฎ์ผ์ค ๋ ํ์ธํด์ฃผ์ธ์~!
| import java.util.ArrayList; | ||
| import java.util.List; | ||
|
|
||
| public class DtoFactory { |
There was a problem hiding this comment.
๊ณต๊ฐ ๊ท์น ์ฐจ์ด๊ฐ ๋๋ฌ๋ ์นด๋๋ฅผ ํ์ฅ๋ง ๊ณต๊ฐํ๊ณ ํ๋ ์ด์ด๋ ๋ฐ์ ์นด๋ 2์ฅ์ ๋ชจ๋ ๊ณต๊ฐํ๋๊ฑธ๊น์? ๊ณต๊ฐํ ์นด๋ openํ๋ ๊ฒ์ ์ถ์ํํ๋ฉด ์๋๋์?
| private static final int MIN_BETTING_MONEY = 1; | ||
| private static final String INVALID_MESSAGE = "๋ฐฐํ ๊ธ์ก์ 0๋ณด๋ค ์ปค์ผ ํฉ๋๋ค."; | ||
|
|
||
| private final int value; |
There was a problem hiding this comment.
Integer.Max๋ณด๋ค ๋ ํฐ ๊ฐ์ด ์ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๐ฑ ๋ธ๋์ญ์ ๋๋ฐ์
๋๋ค..!!
๋ฐ์ดํฐ ํ์
์ ๋ํ ๊ณ ๋ ค๋ ํด๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์์.
There was a problem hiding this comment.
Max๊ฐ์ ๋๋ฉ์ธ ๊ท์น์์ผ๋ก ์ ํ๋ ๊ฒ๋ง ๊ณ ๋ คํ๊ณ ์์๋๋ฐ ๋ฐ์ดํฐ ํ์ ์์ฒด์ Max๊ฐ ์ํฅ์ ๋ฐ์ ์ ์์ ๊ฑฐ๋ผ๊ณ ๋ ์๊ฐ์ ๋ชปํด๋ณธ ๊ฒ ๊ฐ์ต๋๋ค ๐ฅฒ
๋ธ๋์ญ์ ๋๋ฐ ๊ฒ์์ธ ๋งํผ ํฐ ๊ธ์ก์ด ์ค๊ฐ ๊ฐ๋ฅ์ฑ์ ๊ณ ๋ คํด์ผ ํ๋๋ฐ ์ง๊ธ๊น์ง ํฐ ์ซ์๋ฅผ ๋ค๋ค๋ณธ ์ ์ด ์๋ค๋ณด๋ Integer๋ฉด ์ถฉ๋ถํ ํฐ ์๋ฅผ ๋ค๋ฃฌ๋ค๊ณ ์๊ฐํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ธํด๋ณด๋ 20์ต์ด ์ต๋๊ธฐ ๋๋ฌธ์ ๋ธ๋์ญ์ด๋ผ๋ ๋๋ฉ์ธ์์๋ ์ถฉ๋ถํ ๋ฌธ์ ๊ฐ ์์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์ด์.
์๊ตฌ์ฌํญ์์ ๋ฒ ํ ๋จธ๋์ ๋ํ ์ํ์ด ์กด์ฌํ์ง๋ ์๊ธฐ ๋๋ฌธ์ ์ถฉ๋ถํ ๊ธ์ก ์ค์ ์ด ๊ฐ๋ฅํ๋๋ก Long์ผ๋ก ์์ ํด๋์์ต๋๋ค.
There was a problem hiding this comment.
์์ ํด์ฃผ์ ๋ถ๋ถ์ด ์ ๊ฐ ์๋ํ๊ฒ ๋ง์ต๋๋ค ๐ฏ
| .map(String::trim) | ||
| .filter(c -> !c.isEmpty()) |
There was a problem hiding this comment.
์ค๊ฐ ์ฐ์ฐ์ด ์ฌ๋ฌ๋ฒ ์์ด์ ๋ฌธ์ ๋ ์ ์๋ ๋ถ๋ถ์ด ์ด๋ค ํฌ์ธํธ์ธ์ง์ ๋ํด์๋ ์์ง ์์ ํ ์ดํดํ์ง ๋ชปํ ๊ฒ ๊ฐ์ต๋๋ค.
-> ๊ฐ๋
์ฑ ์ธก๋ฉด์์ ๋ฆฌ๋ทฐ๋๋ ธ์ด์!
ํ์ตํด๋ณด์๋ฉด ์ข์ ๊ฒ์ stream์ด ๋ณด์ด๊ธธ๋ ๋ง์๋๋ ธ๋ ๊ฒ์ด๊ณ , ์๋ฌด๋๋ ์ฌ๋์ด ์ดํดํ๊ธฐ์๋ ์์๋๋ก๋ผ์ trim์ ํ๊ณ ๋ฌธ์์ด์ด ๋น์์ผ๋ฉด ์ ์ธ ๋ณด๋ค๋ ๋ฌธ์์ด์ด ๋น๊ฐ์ด๋ฉด ์ ์ธ๊ฐ ์ข ๋ ์ดํดํ๊ธฐ ์ฌ์ฐ๋๊น์~
kang-hyungu
left a comment
There was a problem hiding this comment.
๋ฃจ๋ ๋ช ๊ฐ์ง ํผ๋๋ฐฑ ๋จ๊ฒผ์ด์
๊ถ๊ธํ ์ ์์ผ๋ฉด ์ง๋ฌธ์ฃผ์ธ์
| private void registerPlayer() { | ||
| // TODO: ๋ฒ ํ ๊ธฐ๋ฅ ์ถ๊ฐ ์ ์ด๋ฆ ์ ๋ ฅ ํ ๊ฐ ํ๋ ์ด์ด์ ๋ฒ ํ ๊ธ์ก๋ ํจ๊ป ๋ฑ๋ก | ||
| while (true) { | ||
| try { |
There was a problem hiding this comment.
2๋์ค๋ฅผ 1๋์ค๋ก ์ค์ฌ๋ณด์ธ์
There was a problem hiding this comment.
try-catch ์ญ์ ๋์ค์ ํด๋น๋๋ ๊ฒ์ ๋์ณค๋ค์
try-catch๋ถ๋ถ์ ๋ฉ์๋๋ก ๋ถ๋ฆฌํ์ฌ ๋์ค๋ฅผ ์ค์ฌ๋ณด์์ต๋๋ค
| } | ||
|
|
||
| private void registerPlayersWithBettingMoney(List<Name> playerNames) { | ||
| List<BettingMoney> bettingMoneyList = new ArrayList<>(); |
There was a problem hiding this comment.
| List<BettingMoney> bettingMoneyList = new ArrayList<>(); | |
| List<BettingMoney> bettingMoneys = new ArrayList<>(); |
ํ์
์ ์ด๋ฏธ List๊ฐ ์ฐ์ด๊ณ ์๋๋ฐ ๋ณ์๋ช
์ ๋ ํ์ํ ํ์๊ฐ ์์๊น์?
๋ฆฌ์คํธ์ ๋ณ์๋ช
์ ์์ด๋ฌธ๋ฒ๊ณผ ์๊ด ์์ด s๋ฅผ ๋ถ์ด๊ธฐ๋ ํ๋ ์ฐธ๊ณ ํ์ธ์
There was a problem hiding this comment.
์๊ฐํด๋ณด๋ฉด ๋ณ์๋ช
์๋ ๋ช
์ํ ํ์๊ฐ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฌธ๋ฒ๊ณผ ์๊ด์์ด s๋ฅผ ๋ถ์ด๋ ๊ฒ์ ์ฒ์ ์๊ฒ ๋์์ด์. ํด๋น ๋ณ์๋ช
์ ์์ ํด๋๊ฒ ์ต๋๋ค ๊ฐ์ฌํฉ๋๋ค!
| @@ -56,15 +67,24 @@ private void initGame() { | |||
| } | |||
|
|
|||
| private void playPlayerTurn() { | |||
There was a problem hiding this comment.
๋ฉ์๋๋ช ์ ๊ทธ๋ฅ play๋ผ๊ณ ํด๋ ์ถฉ๋ถํ์ง ์๋์?
There was a problem hiding this comment.
ํ๋ฆฌ์ฝ์ค์์ ๊ณตํต ํผ๋๋ฐฑ์ผ๋ก ๋ฉ์๋ ์ด๋ฆ์ด ๊ธธ์ด์ง๋๋ผ๋ ํ์คํ ์ด๋ฆ์ ์ง์ด์ฃผ๋ ๊ฒ์ด ์ข๋ค๋ ํผ๋๋ฐฑ์ ๋ฐ์ ๊ธฐ์ต์ด ์์ต๋๋ค. ์ปจํธ๋กค๋ฌ์์๋ ๋๋ฌํด๊ณผ ํ๋ ์ด์ดํด์ ๊ตฌ๋ถํด์ ์งํํ๊ธฐ ๋๋ฌธ์ ์ฒ์์ playPlayerTurn๊ณผ playDealerTurn์ ๊ตฌ๋ถํ์ฌ ์ฝ๊ธฐ ์ฝ๋๋ก ๋ฉ์๋ ์ด๋ฆ์ ์ง์์ต๋๋ค.
๋ค์ ์๊ฐํด๋ณด๋ ์คํ ๋ก์ง์์ ํต์ฌ์ ํ๋ ์ด์ด ํด์ด๊ณ , ์ด๋ฏธ ๋ด๋ถ์์ playSinglePlayerTurn๋ฉ์๋๋ฅผ ์คํํ๊ณ ์์ด์ ๊ทธ๋ฅ play๋ก ์์ฑํ๋๊ฒ ๋ ๋ช ํํ ๊ฒ ๊ฐ์ต๋๋ค.
ํด๋น ๋ฉ์๋๋ play๋ก ์์ ํด๋๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
| Result(String name) { | ||
| this.name = name; | ||
| } | ||
| if (player.isBust()) return BUST; |
There was a problem hiding this comment.
if์ ์ ๊ตฌ๋ฌธ์ด ์ฝ๋ ํ์ค์ด๋ผ๋ ์ค๊ดํธ ๋ถ์ด์ธ์
๋ณ๊ฒฝ ์ฌํญ ์๊ฒจ์ ์ฝ๋ ์ถ๊ฐํ๋ฉด์ ์ค๊ดํธ ์๋ตํ๋ฉด์ ์ค์๊ฐ ๋ฐ์ํ๊ธฐ๋ ํฉ๋๋ค
There was a problem hiding this comment.
๋ฉ์๋ ๋ผ์ธ ์์ ๋ํ ์์ ๋๋ฌธ์ ์๋ต์ ํ๊ฒ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
if ์ค๊ดํธ ์ ์ฝ์ด ์ ์๋์ง ์๋ฌธ์ด์๋๋ฐ ์ฝ๋ ์์ ์ ์ค์ ๋ฐฉ์ง๋ฅผ ์ํด์ ์๊ตฐ์
์์ ํด๋๊ฒ ์ต๋๋ค ๊ฐ์ฌํฉ๋๋ค!
| import java.util.ArrayList; | ||
| import java.util.List; | ||
|
|
||
| public class GameManager { |
There was a problem hiding this comment.
๊ฒ์ ๋งค๋์ ๋ผ๋ ์ด๋ฆ์ ๋ณด๋ฉด ํ์์ด ์ด๊ฒ ๋ฌด์จ ์์
์ ์ฒ๋ฆฌํ๋์ง ์ฝ๊ฒ ํ์
์ ํ ์ ์์๊น์?
๋ชจํธํ ์ด๋ฆ๋ณด๋ค ๋ธ๋์ญ์์ ์ฐ๋ ์ฉ์ด๋ฅผ ํ์ฉํด๋ณด์ธ์
There was a problem hiding this comment.
๋๋ฉ์ธ์ ๋ชจ๋ฅด๋ ์ฌ๋์ด ๋ดค์ ๋ ๋์์ ๊ธฐ์ค์ผ๋ก ์ฝ์ ์ ์๋ ๋ค์ด๋ฐ๊ณผ,
๋๋ฉ์ธ์ ์๊ณ ์๋ ์ฌ๋์ด ๋ดค์ ๋ ์ด๋ค ์ญํ ์ธ์ง ํ์คํ ์ดํดํ ์ ์๋ ๋ค์ด๋ฐ ์ค์์ ๊ณ ๋ฏผ์ ํ๋ค๊ฐ ์ ์๋ฅผ ์ ํํ๊ฒ ๋์์ต๋๋ค.
๋ค๋ฅธ ํฌ๋ฃจ๋ค์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด ๋ณด์์ ๋ ๋๋ฉ์ธ ์ฉ์ด๋ฅผ ํ์ฉํ ๋ค์ด๋ฐ์ด ๋ ๊ฐ๊ฒฐํ๊ณ ๋ช ๋ฃํ ๊ฒ ๊ฐ์์ ์์ ์ ๊ณ ๋ฏผํ๊ณ ์์๋๋ฐ GameManager ์ ๊ทธ ๋ฉ์๋๋ค์ ๋ธ๋์ญ ์ฉ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ ํด๋ณด์์ต๋๋ค.
Q. ์ค๋ฌด์์๋ ๋๋ฉ์ธ์ ๋ํด ์ดํดํ๊ณ ์๋ค๊ณ ๊ฐ์ ํ๊ณ ๋๋ฉ์ธ ์ฉ์ด๋ฅผ ํ์ฉํ ๋ค์ด๋ฐ์ ํ๋ ๊ฒ์ ์ ํธํ๋์ง ๊ถ๊ธํฉ๋๋ค
| } | ||
|
|
||
| protected boolean hasTwoCards() { | ||
| return hand.size() == 2; |
There was a problem hiding this comment.
2๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ์์๋ก ์ถ์ถํด์ ์๋ฏธ ์๋ ์ด๋ฆ์ ๋ถ์ฌ๋ณด์ธ์
There was a problem hiding this comment.
ํ๋์ฝ๋ฉ ๋ ์ซ์๋ฅผ ์ถํ ์์ ํ๋ค๋๊ฒ ๋์ณค๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ธฐ์กด OutputView์์๋ ์ด๊ธฐ ํธ๋ ์ฌ์ด์ฆ 2๋ฅผ ์ถ๋ ฅํ๋ ์์๊ฐ ์์์ด์ ๋ฐ๋ก ๊ท์น ํด๋์ค๋ฅผ ๋ง๋ค์ด ์์๋ฅผ ์ ์ธํ๊ณ ๋ถ๋ฌ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์์ ํด๋ดค์ด์
| return hand.isBlackjack(); | ||
| } | ||
|
|
||
| public void receiveCard(Card card) { |
There was a problem hiding this comment.
receive ๋์ ๊ฒ์์์ ์ค์ ์ฌ์ฉํ๋ ์ฉ์ด๋ฅผ ํ์ฉํด๋ณด์ธ์
There was a problem hiding this comment.
๋๋ฉ์ธ ํ๋์ ๋ํ๋ด๋ ๊ธฐ์กด GameManager์ ๊ทธ ๋ฉ์๋๋ค์์ ๋ธ๋์ญ ์ฉ์ด๋ฅผ ๋ฐ์ํ์์ต๋๋ค.
ex. drawPlayerCard๋ฅผ hit์ผ๋ก
Participant์ receiveCard๋ ํ๋ ์ด์ด์ ์ ํ ํ๋์ด ์๋๋ผ
์ ๋ฌ๋ ์นด๋๋ฅผ ์ํ์ ๋ฐ์ํ๋ ์ญํ ์ด๋ผ๊ณ ํ๋จํ์ฌ,
๋์ผํ ์ฉ์ด์ธ hit์ผ๋ก ๋์ฒด๋๋ฉด ํผ๋์ด ์์ ๊ฒ ๊ฐ์ ์๋ฏธ๋ฅผ ๋๋ฌ๋ด๊ธฐ ์ํด addCard๋ก ์์ ํด๋ณด์์ต๋๋ค.
| hand.add(card); | ||
| } | ||
|
|
||
| public List<String> getHandToString() { |
There was a problem hiding this comment.
์ด ๋ฉ์๋๊ฐ ํ์ํ ์ด์ ๊ฐ ๋ญ๊ฐ์?
There was a problem hiding this comment.
Hand๋ Participant์ ๋ด๋ถ ์ํ๋ผ๊ณ ์๊ฐํด์,
์ธ๋ถ๊ฐ Hand์ ์ง์ ์ ๊ทผํ๋ ๊ฒ ๋ณด๋ค Participant๊ฐ
ํ์ํ ๊ฐ์ ์ ๊ณตํ๋ ๊ตฌ์กฐ๊ฐ ๋ ์ ์ ํ๋ค๊ณ ํ๋จํ์ต๋๋ค.
๋ค๋ง ํ์ฌ getHandToString์ ๋ช
ํํ ์๋๊ฐ ์ ๋ฌ๋์ง ์๊ณ ๊ตฌํ ์์ ์์ ์ ์ ์ด๋ฆ์ด๋ผ
Participant์ ์๋๊ฐ ์ถฉ๋ถํ ์ ๋ฌ๋์ง ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ ์ ์ ํ ํํ์ผ๋ก ์์ ํ๊ธฐ ์ํด revealCards๋ก ์์ ํด๋์์ต๋๋ค.
ํน์ ๊ตฌ๊ตฌ๊ฐ ์ง๋ฌธ ์ฃผ์ ์๋๊ฐ ๋จ์ํ ์ค๊ณ ์ญํ ์ ํ๋ getHandToString ๋ฉ์๋ ์์ฒด์ ๋ํ ๊ฒ์ด ์๋๋ผ,
Hand์์ ์นด๋ ์ ๋ณด๋ฅผ ๋ฌธ์์ด ํํ๋ก ๋ณํํ๋ ๋ฉ์๋ ์์ฒด์ ํ์์ฑ์ ๋ํ ๊ฒ์ธ์ง ๊ถ๊ธํฉ๋๋ค.
|
|
||
| public void receiveCard(Card card) { | ||
| players.forEach(player -> player.receiveCard(card)); | ||
| public static Players of(List<Player> playersList) { |
There was a problem hiding this comment.
ํฉํฐ๋ฆฌ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ ์ด์ ๊ฐ ๋ญ์ฃ ?
์์ฑ์๋ฅผ ์จ๋ ๋์ง ์๋์?
There was a problem hiding this comment.
์ฒ์์๋ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋์ ์ฅ์ ์ธ ์บก์ํ์ ์๋๊ฐ ๋๋ฌ๋๋ ๋ค์ด๋ฐ์ ๊ณ ๋ คํด์ ๋์ ํ์ต๋๋ค.
๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ณ ๋ค์ ๋ณด๋ ํ์ฌ Players์ ์์ฑ ๊ณผ์ ์ด ์์ฑ์๋ฅผ ๊ฐ์ธ๊ธฐ๋ง ํ๊ณ ์๊ณ ,
of๋ผ๋ ์ด๋ฆ๋ ์๋๋ฅผ ๋๋ฌ๋ด๋ ์ญํ ์ ๋ชปํ๊ณ ์๋ ๊ฒ ๊ฐ์์
์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋์ ์ด์ ์ ์ ๋๋ก ์ ์ฉํ์ง ๋ชปํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ณ๋ ๊ฒ์ฆ ์ฑ
์๋ ์๋ ๋จ์ ์์ฑ๋ง ํ๊ณ ์๊ธฐ ๋๋ฌธ์
์์ฑ์๋ฅผ ์ฌ์ฉํ๋ ํธ์ด ๋ ๋จ์ํ๊ณ ์์ฐ์ค๋ฌ์ ๋ณด์ฌ์ ์์ฑ์๋ฅผ ์ฌ์ฉํ๋๋ก ์์ ํด๋ณด๊ฒ ์ต๋๋ค.
| return List.copyOf(players); | ||
| } | ||
|
|
||
| public List<Player> getNonNaturalBlackJackPlayers() { |
There was a problem hiding this comment.
NonNaturalBlackJackPlayers
์ด๊ฒ ๋ญ ์๋ฏธํ๋์? ์ค์ ๊ฒ์์์ ์ฐ๋ ํํ์ธ๊ฐ์?
๋ค๋ฅธ ํ์์ด ๋ดค์ ๋ ๋ฐ๋ก ํ์
ํ๊ธฐ ์ด๋ ค์ด ์ด๋ฆ์ ํผํ์ธ์
There was a problem hiding this comment.
ํด๋น ๋ฉ์๋๋ฅผ ๊ณ ๋ คํ๋ ๋น์ ์ ๊ฐ ์๊ฐํ ๋ก์ง์ ํ๋ฆ์ด์๋
'๋ค์ธ๋ด ๋ธ๋์ญ์ด ์๋ ํ๋ ์ด์ด๋ค์ ๊ฑฐ๋ฅด๊ณ , ๋๋จธ์ง ํ๋ ์ด์ด๋ค๋ง์ ํ์ฉํ์ฌ ๋ก์ง ์คํ'
์ ๋ฉ์๋์ ๊ทธ๋๋ก ์ ๋ค๋ณด๋ ์๊ธด ๋ค์ด๋ฐ์
๋๋ค.
๋ค์๋ณด๋ ์๋ฏธ๋ฅผ ๋ด๊ธฐ ๋ถ์กฑํ ๋ฉ์๋๋ผ๋ ์๊ฐ์ด ๋ค์ด์ getPlayersInTurn ์ผ๋ก ์์ ํด๋ณด์์ต๋๋ค.
jurlring
left a comment
There was a problem hiding this comment.
๋ฃจ๋ ์๋ ํ์ธ์!
๊ตฌ๊ตฌ๋ง์ ์ฃผ๋ฏผ์ด์
์ ์ฝ๋ฉํธ๊ฐ ์ด๋ฏธ ๋ง์ด ๋ฌ๋ ธ๋ค์..ใ
ใ
๋์ ๋๋ ๋ช๊ฐ๋ง ๋ ์ถ๊ฐํด๋ณด์์ต๋๋ค!
์๊ฐ ๊ด์ฐฎ์ผ์ค ๋ ํ์ธํด์ฃผ์ธ์ :)
| public class BettingMoneyTest { | ||
|
|
||
| @Test | ||
| void ๋ฐฐํ ๊ธ์ก์_0๋ณด๋ค_์ปค์ผ_ํ๋ค() { |
There was a problem hiding this comment.
์ข ๋ ๋ง์ ์ฃ์ง์ผ์ด์ค๊ฐ ์์ ๊ฒ ๊ฐ์์!
There was a problem hiding this comment.
ํ
์คํธ ํ์ผ์ ํ๋๊ณ ์ฃ์ง์ผ์ด์ค๋ฅผ ์ถ๊ฐํ๊ณ ์ ํ์๋๋ฐ ์์
์ ํ๋ค๊ฐ ์์ ๊ฒ ๊ฐ์ต๋๋ค..
๊ฐ ๊ฒ์ฆ ๋ฟ ์๋๋ผ ๊ณ์ฐ ๋ก์ง๋ ๊ฐ์ง๊ณ ์์ด์ ํด๋น ๋ถ๋ถ ๋ฐ์ํ์ฌ ํ
์คํธ ์ผ์ด์ค๋ฅผ ์ถ๊ฐํด๋ณด์์ต๋๋ค.
| if (player.isBust()) return BUST; | ||
| if (player.isNaturalBlackJack()) return BLACKJACK; | ||
| if (playerScore > dealerScore) return WIN; | ||
| if (playerScore < dealerScore) return LOSE; |
There was a problem hiding this comment.
๋๋ฌ๊ฐ 21์ ์ด ๋์์ ๋ ์๊ตฌ์ฌํญ์ด ๋ฐ์๋์ง ์์ ๊ฒ ๊ฐ์์!
There was a problem hiding this comment.
๊ธฐ๋ฅ์ ๊ตฌํํ๋ค ๋๋ฌ๊ฐ ๋ฒ์คํธ ๋ ์ํฉ์ ์ผ์ด์ค๋ฅผ ๋์น ๊ฒ ๊ฐ์ต๋๋ค.. ๐
์ด๊ธฐ ๊ตฌํ์์๋ ํ๋ ์ด์ด์ ์ํ๋ฅผ PlayerStatus๋ก ๋ถ๋ฆฌํ๊ณ ,
naturalBlackJack ์ฌ๋ถ๋ ํด๋น ์ํ ๊ฐ์ฒด์์ ๊ด๋ฆฌํ๋ ๋ฐฉํฅ์ผ๋ก ์ค๊ณํ์์ต๋๋ค
๋์ณค๋ ๋๋ฌ bust, ๋์ ๋ธ๋์ญ ๋ฑ์ ์๊ตฌ์ฌํญ์ ๋ฐ์ํ๋ฉด์
๊ฒฐ๊ณผ ํ์ ๋ก์ง์ ๋ค์ ์ดํด๋ณด๋, naturalBlackJack์ ํ๋ ์ด์ด ๋ฟ ์๋๋ผ ๋๋ฌ์๊ฒ์๋ ํ๋จ ๋์ด์ผ ํ๋ ๋ก์ง์ด๋ผ PlayerStatus์์๋ง ์ฒดํฌํ๋ ๊ฒ์ ๋ถ์์ฐ์ค๋ฝ๋ค๊ณ ํ๋จ๋์์ต๋๋ค.
๊ทธ๋์ PlayerStatus์์ naturalBlackJack์ ์ ๊ฑฐํ๊ณ ,
Participant์์ hasTwoCards()์ isBlackJack()์ ๊ธฐ๋ฐ์ผ๋ก ๊ณ์ฐํ๋๋ก ๋ณ๊ฒฝํ์ต๋๋ค.
์ด ๊ณผ์ ์์ PlayerStatus์ ์ญํ ์ด ์ค์ด๋ค์๊ธฐ ๋๋ฌธ์ ํด๋น ํด๋์ค๋ฅผ ์ ๊ฑฐํ๊ณ
Player๊ฐ BettingMoney๋ฅผ ์ง์ ๊ฐ์ง๋๋ก ์์ ํ์์ต๋๋ค.
์ดํ Result.from() ๋ก์ง์์
- ๋๋ฌ bust ์ ํ๋ ์ด์ด ์น๋ฆฌ
- ํ๋ ์ด์ด์ ๋๋ฌ๊ฐ ๋์์ ๋ธ๋์ญ์ธ ๊ฒฝ์ฐ ๋ฌด์น๋ถ
๋ฑ์ ์๊ตฌ์ฌํญ์ ๋ฐ์ํ๋๋ก ์ฝ๋๋ฅผ ์์ ํ์์ต๋๋ค..!
|
|
||
| public class Deck { | ||
| List<Card> cards = new ArrayList<>(); | ||
| final List<Card> cards = new ArrayList<>(); |
There was a problem hiding this comment.
final์ ์ ๋ถ์ฌ์ฃผ์ จ์ง๋ง ์ ๊ทผ์ ์ด์๋ ๋น ์ง ๊ฒ ๊ฐ์์ ๐ข
There was a problem hiding this comment.
์ ๊ทผ์ ์ด์๋ฅผ ์๊พธ ๋นผ๋จน๋ค์.. ์์์ ์ผ๋ก ๊ณ ์ณ๋ณด๊ฒ ์ต๋๋ค
์ ๊ทผ์ ์ด์ ๋ฐ์ํด๋์์ต๋๋ค..!
| import java.util.ArrayList; | ||
| import java.util.List; | ||
|
|
||
| public class DtoFactory { |
There was a problem hiding this comment.
๋ฃจ๋ ์ฌ๋ฐ๋ ๊ณ ๋ฏผ์ ํ์ จ๊ตฐ์! ใ ใ ํ์ํ ๊ณ ๋ฏผ์ด๋ผ๊ณ ์๊ฐํด์~
์ ๋ต์ ์๋์ง๋ง ์ ์๊ฐ์ ๊ณต์ ๋๋ฆฌ๋ฉด์,
์ ๋ DTO ์์ฑ์ ๋๋ฉ์ธ์ ์ฑ
์์ด ์๋๊ธฐ ๋๋ฌธ์, Players๊ฐ DTO ํํ์ ๊ฒฐ๊ณผ๋ฅผ ์ง์ ๋ง๋ค์ด ๋ฐํํ๋ ๋ฐฉ์๊น์ง ๊ฐ์ ธ๊ฐ ํ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด ๋๋ฉ์ธ ๊ฐ์ฒด๊ฐ DTO์ ์์กดํ๊ฒ ๋๋๋ฐ, ์ด๋ ๋ ์ด์ด ์ํคํ
์ฒ ๊ด์ ์์ ๋๋ฉ์ธ โ DTO ๋ฐฉํฅ์ ์ญ๋ฐฉํฅ ์์กด์ด ์๊ธฐ๋ ๊ตฌ์กฐ๋ผ์ ์ง์ํ๋ ๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํด์!
๋ํ Players๊ฐ ์๊ธฐ ๋ฐ์ดํฐ๋ฅผ ์ด๋ค ํํ๋ก ํํํ ์ง๊น์ง ์๊ฒ ๋๋ ๊ฒ์ ์บก์ํ๋ฅผ ๊ฐํํ๋ ๋ฐฉํฅ์ด๋ผ๊ธฐ๋ณด๋ค๋, ์คํ๋ ค ํํ ๊ณ์ธต์ ์ฑ
์๊น์ง ๊ฐ์ ธ์ค๋ ์ฑ
์ ๊ณผ์์ ๊ฐ๊น์ด ์ค๊ณ๋ผ๊ณ ๋๊ปด์ง๋๋ค..!
jurlring
left a comment
There was a problem hiding this comment.
๋ฃจ๋ ์๋
ํ์ธ์!
๋ธ๋์ญ ๋ฏธ์
ํ์๋๋ผ ์ ๋ง ๊ณ ์ ๋ง์ผ์
จ์ต๋๋ค :)
๋ค์ ๋ฏธ์
๋ ์ด๋ฒ์ฒ๋ผ ์ ํ์ค ๊ฒ ๊ฐ์์~ ์์ํ๊ฒ ์ต๋๋ค!
์ฒดํฌ ๋ฆฌ์คํธ
test๋ฅผ ์คํํ์ ๋, ๋ชจ๋ ํ ์คํธ๊ฐ ์ ์์ ์ผ๋ก ํต๊ณผํ๋์?์ด๋ค ๋ถ๋ถ์ ์ง์คํ์ฌ ๋ฆฌ๋ทฐํด์ผ ํ ๊น์?
๋ธ๋์ญ2 PR ๋ฆฌ๋ทฐ ์์ฒญ
๋ฆฌ๋ทฐ ์์ฒญ
์ด๋ฒ ๋ฏธ์ ์์๋ ํนํ ์ค๊ณ๋ฅผ ๊ฒฐ์ ํ๋ ๊ณผ์ ์์ ์ด๋ค ๊ธฐ์ค์ผ๋ก ํ๋จํ๋ฉด ์ข์์ง์ ๋ํ ์กฐ์ธ์ ์ป๊ณ ์ถ์ต๋๋ค.
1. Controller ๋์ ์ ๋ํ ๊ณ ๋ฏผ
์ด๋ฒ ๋ฏธ์ ์ ๊ตฌํํ๋ฉด์ ๊ฐ์ฅ ๊ณ ๋ฏผํ๋ ๋ถ๋ถ ์ค ํ๋๋ Controller๋ฅผ ๋์ ํ๋ ๊ฒ์ด ๋ง๋๊ฐ์์ต๋๋ค.
ํฌ๋ฃจ๋ค๊ณผ ํ ๋ก ์ ์งํํ๋ ์ค, ์ง๋๊ฐ๋ ์ฝ์น๋์ด '์ปจํธ๋กค๋ฌ๋ฅผ ์ ์ฌ์ฉํด์?' ๋ผ๋ ์ง๋ฌธ์ ๋์ง๊ณ ๊ฐ์ จ๋๋ฐ, ์ด๋ฒ ๋ฏธ์ ์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ ์ฉํ๋ ๊ฒ์ด ์ณ์๋์ง์ ๋ํ ๊ณ ๋ฏผ์ ํ๊ฒ ๋์์ต๋๋ค.
์ ๊ฐ ์ดํดํ Controller์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ๋ ๊ฒ์์ ์ ์ฒด ํ๋ฆ์ ๋ด๋นํ๋ ๊ฐ์ฒด๊ฐ ํ์ํ๋ค๊ณ ์๊ฐํ๊ณ , ๊ทธ ์ญํ ์ Controller๊ฐ ๋งก๋ ๊ฒ์ด ์์ฐ์ค๋ฝ๋ค๊ณ ํ๋จํ์ต๋๋ค.
๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ ํ๋ฆ์ Controller์์ ๋ด๋นํ๋๋ก ๊ตฌํํ์ต๋๋ค.
ํ์ง๋ง ํฌ๋ฃจ๋ค๊ณผ ๋ฆฌ๋ทฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์์ ์ด๋ฐ ์๊ฐ๋ ๋ค์์ต๋๋ค.
๊ทธ๋์ PR์ ์์ฑํ๋ ์๊ฐ์๋ Controller๊ฐ ํ๋ฆ์ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ๊ฐ ๊ผญ ํ์ํ์๊น? ์ ๋ํด์๋ ๋ถ์ ์ ์ธ ์๊ฐ์ด ๋ญ๋๋ค.
์ง๋ฌธ
์ฃผ๋๊ฐ ์๊ฐํ์๋
์ ๋ํ ์๊ฒฌ์ ๋ฃ๊ณ ์ถ์ต๋๋ค.
2. ์ค๊ณ ๊ฒฐ์ ์ ๋ด๋ฆด ๋์ ๊ธฐ์ค์ ๋ํ ๊ณ ๋ฏผ
์ด๋ฒ ๋ฏธ์ ์ ์งํํ๋ฉด์ ์ค๊ณ๋ฅผ ๊ฒฐ์ ํด์ผ ํ๋ ์๊ฐ๋ค์ด ์ฌ๋ฌ ๋ฒ ์์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๊ณ ๋ฏผ๋ค์ด ์์์ต๋๋ค.
์ด๋ฐ ๊ณ ๋ฏผ๋ค์ ํ ๋๋ง๋ค ์ค์ค๋ก ๋๋ฆ์ ๊ธฐ์ค์ ์ธ์ ๊ฒฐ์ ์ ๋ด๋ ธ์ง๋ง
๊ทธ ๊ธฐ์ค์ด ๊ฐ์ฒด์งํฅ ์ค๊ณ ๊ด์ ์์ ์ ์ ํ ๊ธฐ์ค์ด์๋์ง ํ์ ์ด ์์ง๋ ์์ง ์์ต๋๋ค.
๊ทธ๋์ ์ฃผ๋์๊ฒ ๋ค์๊ณผ ๊ฐ์ ๋ถ๋ถ์ ์ง๋ฌธํ๊ณ ์ถ์ต๋๋ค.
์ง๋ฌธ
๋๋ฉ์ธ ์ค๊ณ๋ฅผ ํ ๋
์ ๋ํด ์กฐ์ธ์ ๋ฃ๊ณ ์ถ์ต๋๋ค.
3. ํ ์คํธ์ ์ค๊ณ์ ๊ด๊ณ์ ๋ํ ๊ณ ๋ฏผ
์ด๋ฒ ๋ฏธ์ ์์ ํ ์คํธ๋ฅผ ์์ฑํ๋ฉด์ ๋๋ ์ ์
ํ ์คํธ๊ฐ ์ค๊ณ๋ฅผ ์ด๋๋ค๋ ๊ฐ๊ฐ์ด ์์ง ์ต์ํ์ง ์๋ค๋ ๊ฒ์ด์์ต๋๋ค.
ํ์ฌ ์ ๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ ์คํธ๋ฅผ ์์ฑํ๊ณ ์์ต๋๋ค.
์ฒ์์๋ TDD๋ฅผ ์๋ํด๋ณผ๊น ํ๋ ์๊ฐ์ ํ ์คํธ ์ฝ๋๋ฅผ ๋จผ์ ์จ๋ณด๊ณ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ์ก์๊ฐ๋ ค๋ ์๋๋ ํด๋ณด์์ง๋ง ๋์ ํ ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ๊ตฌํํ ์ง ๊ตฌ์กฐ๊ฐ ๊ทธ๋ ค์ง์ง ์์ ๊ฒฐ๊ตญ ์ค๊ฐ ๋ถํฐ ํด๋์ค ๊ตฌ์กฐ๋ฅผ ๋จผ์ ๊ตฌ์ํด๋๊ณ ๋ง์ถฐ์ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ๋์๊ฐ ๊ฒ ๊ฐ์ต๋๋ค.
ํ์ง๋ง ํ ์คํธ๋ฅผ ์์ฑํ๋ฉด์๋
ํ๋จ์ด ์ ๋์ง ์์ต๋๋ค. ์ด๋ ์ด๋ฒ ๋ธ๋์ญ ๋ฏธ์ ์ด ๋์ ธ์ค ํต์ฌ ์ง๋ฌธ์ด๊ธฐ๋ ํ๋๋ฐ ๋ฏธ์ ๋ง๋ฌด๋ฆฌ ๋จ๊ณ์ ๋ค์ด์๋ ์์ง ํ์ ์ด ์์ต๋๋ค.
์ง๋ฌธ
์ ๋ํด ์กฐ์ธ์ ๋ฃ๊ณ ์ถ์ต๋๋ค.
4. ๋ฏธ์ ์๊ตฌ์ฌํญ๊ณผ ๋๋ฉ์ธ ์ค๊ณ ๊ธฐ์ค์ด ์ถฉ๋ํ ๋์ ํ๋จ ๊ธฐ์ค
์ด์ ๋ถํฐ ๋ฏธ์ ์ ์งํํ๋ฉด์ ์ด์ด์ ธ์จ ๊ณ ๋ฏผ์ ๋๋ค.
์ฐํ ์ฝ ๋ฏธ์ ์๋ ๊ฐ์ฒด์งํฅ ์ํ์ฒด์กฐ ๊ท์น๊ณผ ๊ฐ์ ์ฌ๋ฌ ์ ์ฝ๋ค์ด ์กด์ฌํ๋ฉฐ,
์ด๋ฒ ๋ฏธ์ ์์๋ ๋ค์๊ณผ ๊ฐ์ ์ ์ฝ์ด ์์์ต๋๋ค.
์ด ๊ท์น๋ค์ ๊ฐ์ฒด์งํฅ ์ค๊ณ๋ฅผ ํ์ตํ๊ธฐ ์ํ ์ข์ ๊ฐ์ด๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
ํ์ง๋ง ๊ตฌํ ๊ณผ์ ์์ ํ ๊ฐ์ง ๊ณ ๋ฏผ์ด ์๊ฒผ์ต๋๋ค.
์๋ฅผ ๋ค์ด Player ๊ฐ์ฒด๋ ๋ค์๊ณผ ๊ฐ์ ์ํ๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ๊ฐ์ง๊ฒ ๋์์ต๋๋ค.
์ด ๊ฒฝ์ฐ ํ๋ ์๊ฐ 3๊ฐ๊ฐ ๋ฉ๋๋ค.
์ด ์ํฉ์์ ๋ ๊ฐ์ง ์ ํ์ง๊ฐ ์๋ค๊ณ ๋๊ผ์ต๋๋ค.
์ ๋ ์ด๋ฒ ๊ตฌํ์์๋ ๋๋ฉ์ธ ๋ชจ๋ธ ๊ด์ ์์ ๋ ์์ฐ์ค๋ฝ๋ค๊ณ ์๊ฐ๋๋ ์ค๊ณ๋ฅผ ์ ์งํ๋ ๋ฐฉ์์ ์ ํํ์ต๋๋ค.
๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ค๋ง ์ด ํ๋จ์ด ์ ์ ํ ์ ํ์ด์๋์ง๋ ์ค์ค๋ก ํ์ ์ด ์์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๊ท์น์ ๊นจ๊ณ ๋ด ์ค๊ณ ํ๋จ์ผ๋ก ๊ฒฐ์ ํ๊ธฐ๊น์ง ๊ณ ๋ฏผํ๋ ๋ฐ์๋ ๋ง์ ์๊ฐ์ ์๋นํ์ต๋๋ค.
์ง๋ฌธ
์ด๋ฐ ์ํฉ์ฒ๋ผ
๊ฐ ์๋ก ์ถฉ๋ํ ๋
์ฃผ๋๋ ์ด๋ค ๊ธฐ์ค์ ๋ ์ฐ์ ์ ์ผ๋ก ๊ณ ๋ คํ์๋์ง ๊ถ๊ธํฉ๋๋ค.
์ด๋ฐ ๊ท์น๋ค์ด ๋๋ฉ์ธ ์ค๊ณ ์์น์ ๋ฐ์ํ ๊ท์น์ธ์ง, ๊ฐ์ฒด์งํฅ ์ค๊ณ๋ฅผ ํ์ตํ๊ธฐ ์ํ ๊ต์ก์ฉ ์ ์ฝ์ธ์ง
๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ ๊ฐ์ง๊ฐ ์ถฉ๋ํ๋ ์ํฉ์์๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ํ๋จํ๋ฉด ์ข์์ง์ ๋ํ ์กฐ์ธ์ ๋ฃ๊ณ ์ถ์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก
์ด๋ฒ ๋ฏธ์ ์์๋ ํนํ ๋ค์ ์ง๋ฌธ๋ค์ ์ค์ค๋ก ๊ณ์ ๊ณ ๋ฏผํ๋ฉฐ ๊ตฌํํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํน์ ์ ๊ฐ ๋์น๊ณ ์๋ ์ค๊ณ ๊ด์ ์ด๋
๋ ๊ณ ๋ฏผํด๋ณด๋ฉด ์ข์ ๋ถ๋ถ์ด ์๋ค๋ฉด ์ด๋ค ํผ๋๋ฐฑ์ด๋ ๊ฐ์ฌํ ๋ฐฐ์ฐ๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.