-
Notifications
You must be signed in to change notification settings - Fork 74
Expand file tree
/
Copy pathBlackJackGame.java
More file actions
69 lines (57 loc) · 1.87 KB
/
BlackJackGame.java
File metadata and controls
69 lines (57 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package blackjack.controller;
import blackjack.domain.game.GameResult;
import blackjack.domain.person.Dealer;
import blackjack.domain.person.Player;
import blackjack.view.InputView;
import blackjack.view.ResultView;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BlackJackGame {
private final Dealer dealer;
private final List<Player> players;
public BlackJackGame() {
dealer = new Dealer();
players = Player.createPlayers(InputView.getPlayerNames(), dealer);
ResultView.printSetUpResult(dealer.getOpenedCard(), players);
}
public void play() {
askPlayers();
giveDealerCard();
printGameResult();
}
private void giveDealerCard() {
if (dealer.canGetCard()) {
dealer.addCard(dealer.getPickedCard());
ResultView.printDealerReceiveCard();
}
}
private void askPlayers() {
for (Player player : players) {
askPlayer(player);
}
}
private void askPlayer(Player player) {
while (player.canHit() && InputView.isHit(player)) {
player.addCard(dealer.getPickedCard());
}
}
private void printGameResult() {
ResultView.printDealerAndPlayerCardResult(dealer, players);
ResultView.printGameResult(getGameResult());
}
private GameResult getGameResult() {
Map<String, String> playerResult = new HashMap<>();
int dealerWin = 0;
int dealerSum = dealer.getSumOfCards();
for (Player player : players) {
if (player.getSumOfCards() < dealerSum) {
dealerWin++;
playerResult.put(player.getName(), "패");
continue;
}
playerResult.put(player.getName(), "승");
}
return new GameResult(playerResult, dealerWin, players.size() - dealerWin);
}
}