-
Notifications
You must be signed in to change notification settings - Fork 74
Expand file tree
/
Copy pathGameController.java
More file actions
63 lines (48 loc) · 1.92 KB
/
GameController.java
File metadata and controls
63 lines (48 loc) · 1.92 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
package blackjack.controller;
import blackjack.domain.Dealer;
import blackjack.domain.Deck;
import blackjack.domain.GameResult;
import blackjack.domain.Player;
import blackjack.domain.Players;
import blackjack.ui.BlackjackInput;
import blackjack.ui.BlackjackOutput;
public class GameController {
private static final String DEALER_NAME = "dealer";
private static final int PLAYER_DRAW_SIZE = 1;
private static final int DEALER_DRAW_SIZE = 1;
private static final int FIRST_DRAW_SIZE = 2;
public void start() {
Deck deck = Deck.create();
Players players = BlackjackInput.inputPlayerName();
Dealer dealer = new Dealer(DEALER_NAME);
drawCardInit(deck, players, dealer);
drawCardFinal(deck, players, dealer);
BlackjackOutput.printFinalResult(GameResult.of(dealer, players));
}
private void drawCardInit(Deck deck, Players players, Dealer dealer) {
BlackjackOutput.printDrawCard(players);
players.drawCardMultiple(deck, FIRST_DRAW_SIZE);
dealer.drawCardMultiple(deck, FIRST_DRAW_SIZE);
BlackjackOutput.printAllCard(players, dealer);
}
private void drawCardFinal(Deck deck, Players players, Dealer dealer) {
drawPlayersCard(deck, players, PLAYER_DRAW_SIZE);
boolean isDraw = dealer.drawCardMultiple(deck, DEALER_DRAW_SIZE);
if(isDraw){
BlackjackOutput.printDealerDraw();
}
BlackjackOutput.printAllCardWithSum(players, dealer);
}
private void drawPlayersCard(Deck deck, Players players, int size) {
if (!players.isTargetAvailable()) {
return;
}
Player player = players.getTarget();
while (BlackjackInput.inputPlayerDraw(player)) {
player.drawCardMultiple(deck, size);
BlackjackOutput.printParticipantCard(player);
}
players.nextTargetIndex();
drawPlayersCard(deck, players, size);
}
}