-
Notifications
You must be signed in to change notification settings - Fork 174
Expand file tree
/
Copy pathBaseballController.java
More file actions
49 lines (42 loc) · 1.34 KB
/
BaseballController.java
File metadata and controls
49 lines (42 loc) · 1.34 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
package baseball.controller;
import baseball.domain.*;
import baseball.view.*;
import baseball.domain.BaseballGame;
public class BaseballController {
private final InputView inputView = new InputView();
private final OutputView outputView = new OutputView();
public void play() {
do {
runGame();
} while (isRestartRequested());
}
private void runGame() {
BaseballGame game = new BaseballGame();
Score score;
do {
Player player = enrollPlayer();
score = game.playRound(player);
outputView.printScore(score.toString());
} while (!score.isFinished());
outputView.printGameEnd();
}
private Player enrollPlayer() {
try {
outputView.printInputRequest();
return new Player(inputView.readNumbers());
} catch (IllegalArgumentException e) {
outputView.printError(e.getMessage());
return enrollPlayer();
}
}
private boolean isRestartRequested() {
try {
String input = inputView.readNumbers();
GameStatus status = GameStatus.from(input);
return status.isRestart();
} catch (IllegalArgumentException e) {
outputView.printError(e.getMessage());
return isRestartRequested();
}
}
}