๋ธ๋์ญ ๋ฏธ์ ์์ ์ด๋ ค์ ๋ ๋ถ๋ถ์ ๋ํ์ ์ผ๋ก ๋ช ๊ฐ์ง ์ถ๋ ค๋ณด์๋ฉด Ace ์นด๋์ ๊ตฌํ, ์ ๋ ฅ๊ณผ ๊ฐ์ฒด๊ฐ์ ๊ด๊ณ, ๊ฐ์ฒด์ ์ญํ ๋ถ๋ฆฌ์ด๋ค.
- ์
๋ ฅ๊น์ง ๊ฐ์ฒด์ ์ญํ ์ธ๊ฐ?
์ด๋ฒ ๋ฏธ์
์์ ๊ฐ์ฅ ๋ง์ ๊ณ ๋ฏผ์ ํ๊ฑด ์
๋ ฅ๊ณผ ๊ฐ์ฒด๊ฐ์ ๊ด๊ณ์์ ์ด๋๊น์ง๋ฅผ ๊ฐ์ฒด์ ์ญํ ๋ก ๋ณด๋๋์ด๋ค. ๋ธ๋์ญ ๋ฏธ์
์ ํ๋ ์ด์ด์๊ฒ ๊ณ์ํด์ ์นด๋๋ฅผ ๋ฐ์๊ฑด์ง ๋ฌผ์ด๋ณด๊ณ , ์นด๋๋ฅผ ๋ฐ๋๋ค๊ณ ๊ฒฐ์ ํ๋ฉด ํด๋น ์นด๋๋ฅผ ์ฃผ๊ณ , ์ ์๊ฐ Bust ๋๋์ง๋ฅผ ํ์ธํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ํ๋ ์ด์ด๊ฐ ๊ฐ์ง ์นด๋๋ค์ ์ถ๋ ฅํ๋ฉด์ ๋ค์ ์นด๋๋ฅผ ๋ฐ์๊ฑด์ง ๋ฌผ์ด๋ณด๋ ๋ก์ง์ด ๋ฐ๋ณต๋๋ค.
์ด๋ฐ ํ๋ฆ์ ์ข ์๊ฐํด๋ณด๋ฉด ๊ณ์ํด์ ํ๋ ์ด์ด์ ์ ์๋ฅผ ํ์ธํ์ฌ Bust ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ๊ณ , ์นด๋๋ฅผ ๋ฐ์๊ฑด์ง ๋ฌผ์ด๋ณด๊ณ , ๋ต๋ณ ์ฌ๋ถ์ ๋ฐ๋ผ Yes๋ฉด ์นด๋๋ฅผ ์ฃผ๊ณ , No๋ฉด ๋ฐ๋ณต๋ฌธ์ ๋น ์ ธ๋์จ๋ค. ์ฆ, ํ๋ ์ด์ด์ ์
๋ ฅ ์ฌ๋ถ์ ๋ฐ๋ผ ์นด๋๋ฅผ ๋ ์ฃผ๊ณ ๋ฐ๋ ๋ก์ง์ด ๋ฐ๋ณต๋๋ ๊ฒ! ์ถ๊ฐ๋ก ์ถ๋ ฅ๊น์ง ํ๋ค.
๊ทธ๋์ Input๊ณผ ๊ฐ์ฒด์ ๋ก์ง, Output์ ๋ถ๋ฆฌ๊ฐ ์๋นํ ์ด๋ ค์ ๋ค.
for (Player player : players.getPlayers()) {
while (!player.isFinished()) {
if (!InputView.readDrawOneMore(player.getNickname())) {
player.stand();
break;
}
player.hit(deck.draw());
OutputView.printPlayerCards(player);
}
}
์ต์ข
์ ์ผ๋ก ๋๋ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ์ง๋ง, ํจ์ํ ์ธํฐํ์ด์ค๋ก ํด๊ฒฐํ๋ ๋ฐฉ์๋ ์์๋ค.
public class BlackjackGame {
...
public void playerTurn() {
players.processAllPlayerTurn(
InputView::readDrawOneMore,
OutputView::printPlayerCards
);
...
}
...
}
public class Players {
...
public void processAllPlayerTurn(
Deck deck,
Function<String, boolean> readDrawOneMore,
Consumer<Player> printPlayerCards
) {
for (Player player : players) {
player.processTurn(deck, readDrawOneMore, printPlayerCards);
}
}
}
public class Player {
public void processTurn(
Deck deck,
Function<String, boolean> readDrawOneMore,
Consumer<Player> printPlayerCards
) {
while (!isFinished()) {
if (!readDrawOneMore(nickname)) {
stand();
break;
}
hit(deck.draw());
printPlayerCards(player);
}
}
}
ํด๋น ๋ฐฉ์์ ํ๋ฆ์ ์ ์ดํ๋ ์ฝ๋๊ฐ ๊น๋ํด์ ธ ๋ณด๊ธฐ ์ข์์ง๋ค๋ ๊ฒ์ด๊ณ , ํ๋ ์ด์ด๊ฐ ๋ณธ์ธ์๊ฒ ๋ฌป๊ณ ์นด๋๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ํ๋ ์ด์ด ์์ฒด์ ์ฑ
์์ผ๋ก ์ ํด์ง๋ค๋ ์ฅ์ ์ด ์๋ค. ๋ค๋ง ๋ด ์๊ฐ์ ์ด ๋ฐฉ์์ ๊ฐ์ฅ ํฐ ๋จ์ ์ ํจ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค๋ ์ ์ด๋ค. ํธ์ถ ์์ ๊ณผ ์ฌ์ฉ ์์ ์ ์ฐจ์ด๋ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ๋ก ๋ฃ์ด์ฃผ์ด ๋ฌธ์ ๋์ง ์๋๋คํด๋ ์ด๋ค ํจ์๋ ํ์๋ง ๋ง์ผ๋ฉด ๋ค์ด๊ฐ ์ ์๋ค๋ ๊ฒ์ด ์ ์ผ ํฐ ๋จ์ ๊ฐ๋ค.
์์๋ก `readDrawOneMore`์ด๋ผ๊ณ ๋ ํ์ง๋ง, ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ ์๋ชป ์ดํดํด์ ํ ์ฅ ๋ ๋ฐ์ ๊ฒ์ธ์ง๊ฐ ์๋๋ผ ๋ฐ์๋์ง์ ๋ํด ๋ฌผ์ด๋ณด๋ ํ์์ ๋ฉ์๋๋ฅผ ๋ณด๋๋ค๋ฉด.. y, n์ ์๋ฏธ๊ฐ ์ ๋ฐ๋๊ฐ ๋์ด ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ค.
๊ทธ๋์ ๋๋ ์ด๋ฐ ๋ฐฉ์์ ์ฌ์ฉํ์ง ์์๊ณ , ์ธ๋ถ์์ ์ฒ๋ฆฌํ๋๋ก ํด์ ํ๋ฆ์ ์ข ๋ ์ฝ๊ฒ ํ์
ํ ์ ์๊ฒ ํ๋ค.
ํจ์ํ ์ธํฐํ์ด์ค ์ฌ์ฉ
์ฅ์
- ๊ฐ์ฒด์ ๋ณธ์ธ์ ์ฑ
์์ ๋ชจ๋ ๋๊ฒจ ์์ง๋๊ฐ ๋์์ง
- ๊ฐ์ฒด์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋๋ก ๋ง๋ค ์ ์์
๋จ์
- ํจ์๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ๋ ํ์์ ์ํ์ฑ
- ์ฑ
์์ ์์ฌ๊ฐ ๋ถ๋ถ๋ช
ํด์ง๊ณ ๊ฐ๋
์ฑ์ด ๋จ์ด์ง ์ ์์
- ์ํ ํจํด์ ๋ง๋ฅ์ด ์๋๋ค.
์ด๋ฒ์ ๋ธ๋์ญ ํผ๋๋ฐฑ์ผ๋ก ์ํ ๊ฐ์ฒด๋ฅผ ์ ์ํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ค. ๋ธ๋์ญ ๊ฒ์์์์ ํ์ฌ ์ํ๋ฅผ ๊ฐ์ฒด๋ก ๊ด๋ฆฌํ๋ค๋ ์๊ฐ์ ๋ชปํด๋ดค๊ธฐ๋ ํ๊ณ ์ ๊ธฐํ ๋ฐฉ๋ฒ์ด๋ผ ์๊ฐํด์ ๊ณง์ฅ ๋ด ๋ฏธ์
์ ์ ์ฉํ์๋ค.
๊ทผ๋ฐ ์ ์ฌ์ฉํด์ผ ํ ์ง ๊ณ ๋ฏผํ์ง ์๊ณ ๋์
ํ๊ธฐ ๋๋ฌธ์ผ๊น. ์ํ๋ฅผ ๊ฐ์ฒด๋ก ๋ง๋ค๊ธด ํ์ผ๋ ์ด๋๊น์ง ์ฑ
์์ ๊ฐ์ ธ์ผํ๊ณ ์ด๋ป๊ฒ ํ์ฌ ์ฝ๋์์ ๋ ๊ฐ์ ์ํฌ ์ ์๋์ง ๋ฒฝ์ด ์๊ธด ๊ฒ์ฒ๋ผ ๋งํ๋ฒ๋ ธ์๋ค. ๊ทธ๋์ ์ํ ๊ฐ์ฒด๊ฐ ๋ธ๋์ญ์์ ๊ฐ์ ธ์ผํ ์ฑ
์์ ์ข ๊ณ ๋ฏผํด๋ดค๊ณ ๋๋ฆ์ ๊ฒฐ๋ก ์ ๋ด๋ ธ๋ค.
์ํ ๊ฐ์ฒด๋ ํ๋ ์ด์ด ๋ณธ์ธ์ด ๋ณธ์ธ์ ํ๋์ ๊ฒฐ์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฐ์ฒด์ด์ง ์ธ๋ถ์ ์ํต์ ์ํ ๊ฐ์ฒด๋ ์๋๋ค.
ํด๋น ๊ฒฐ๋ก ์ด ๋์จ ์ด์ ๋ ์ธ๋ถ์์ ๊ฒ์์ ์นํจ๋ฅผ ๊ณ์ฐํ๋๋ฐ, ์ด๋ฐ ์ํ ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๋ ค๊ณ ํ๋ ์คํ๋ ค ๋ณต์กํด์ง๊ณ ์ด๋ ค์ ๋ค. ๊ทธ๋์ ๊ฒฐ๊ตญ ์ํ๊ฐ ๋ฌด์์ธ์ง ํ๋จํ๋ isBust, isBlackjack ๊ฐ์ ๋ฉ์๋๋ฅผ ์ ์ธํ ์ ๋ฐ์ ์์๋๋ฐ ์ ๋ ๊ฒ ๊ฒฐ๋ก ์ ๋ด๋ฆฌ๊ณ ๋๋ ์คํ๋ ค ์ ๋นํ ์ญํ ์ ๋๋ ๊ฒ ๊ฐ์์ ์ข์๋ค.
- Ace ์นด๋ ๊ณ์ฐ
Ace ์นด๋๋ ๋ธ๋์ญ์์ ํน๋ณํ๋ค. 1 ๋๋ 11์ ๊ฐ์ ๊ฐ์ง ์ ์๊ณ , ์ด ๊ฐ์ ์ต์ข
์ ์์ ๋ฐ๋ผ ๊ฒฐ์ ๋์ด์ผ ํ๋ค. ์ฆ, 21์ด ๋์ง ์์ ์ ์์ ๊ฐ์ฅ 21๊ณผ ๊ฐ๊น์ด ์๋ก ๋ง๋๋ ์นด๋๊ฐ ๋์ด์ผ ํ๋ค.
์ด์ฒ๋ผ ์ ์๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ด ๋ธ๋์ญ ๊ฒ์ ๋ฃฐ์ ์ํ ์ฑ
์์ผ๊น, Ace ์นด๋ ์์ฒด์ ์ฑ
์์ผ๊น? ๋ ๊ฐ์ง ๋ชจ๋ ์ฅ๋จ์ ์ด ์๋ค.
1. ๋ธ๋์ญ ๊ฒ์ ๋ฃฐ์ ์ฑ
์
Ace ์นด๋๊ฐ ํน๋ณํ์ง๋ง, ์ด๋ ๋ธ๋์ญ ๊ฒ์์์๋ง ์ ํจํ๋ค๋ ์๊ฐ์ผ๋ก ๊ฒฐ์ ๋๋ ์ฑ
์์ด๋ค. ์ด๋ฌ๋ฉด Ace ์นด๋๊ฐ ์์ ๊ฒฝ์ฐ์ ์ ์์ ๋ํ ๊ณ์ฐ์ ํ๋ ์ด์ด์ ํจ `hands`, `Cards`, `Player`์ ๊ฐ์ ๊ฐ์ฒด๊ฐ ๋ด๋นํ๊ฒ ๋๋ค.
์ฅ์ ์ผ๋ก๋ ๋ณดํต ์ฌ๋๋ค์ด ๋ธ๋์ญ ๊ฒ์์ ์๊ฐํ ๋ ์์ ์ ํจ ํน์ ์์ ์ด ๊ณ์ฐํ๋ค๊ณ ์๊ฐํ๋ ์๊ฐ์ ํ๋ฆ์ ์ซ์๊ฐ๊ธฐ ์ฌ์์ง๋ค.
2. Ace ์นด๋ ์์ฒด์ ์ฑ
์
Ace ์นด๋๊ฐ ์ง์ ๋ณธ์ธ์ ์ ์๋ฅผ ํตํด ์ ์ ๊ณ์ฐ์ ํด์ฃผ๋ ๊ฒ์ด๋ค. ๊ฐ์ฒด์ ์ญํ ์ ๋๊น์ง ํน์ ๊ทน๋จ์ ์ผ๋ก ๋๋๋ค๋ฉด ๋์ฌ ์ ์๋ ์ข์ ์ค๊ณ์ด๋ค. ๋ค๋ง, ๋ธ๋์ญ์์๋ง Ace ์นด๋ 1, 11 ๋ ์ ์๋ฅผ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ๊ตณ์ด ๋๋ ํ์๊ฐ ์๋? ํ๋ ์๊ฐ๋ ์๋ค. ์คํ๋ ค ํด๋์ค๊ฐ ๋๋ ์ง๋ฉด์ ์ ์ ๋ณต์กํด์ง ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
'๊ฐ๋ฐ > ์ฐ์ํํ ํฌ์ฝ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฐํ ์ฝ 7๊ธฐ] ๋ฐฑ์๋ ์ต์ข ํฉ๊ฒฉ ํ๊ณ (2) | 2024.12.29 |
---|---|
[์ฐํ ์ฝ 7๊ธฐ] ์ต์ข ์ฝ๋ฉ ํ ์คํธ.. (0) | 2024.12.16 |