-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathGameFlowManager.java
More file actions
71 lines (55 loc) · 1.97 KB
/
GameFlowManager.java
File metadata and controls
71 lines (55 loc) · 1.97 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
70
71
package manager;
import controller.RacingController;
import java.util.Scanner;
import model.RaceAllOperator;
import model.RaceOnceOperator;
import model.RandomNumberGenerator;
import model.WinningCarChecker;
import model.domain.Cars;
import model.domain.RaceCount;
import model.domain.WinningCarNames;
import view.InputParser;
import view.InputView;
import view.OutputView;
public class GameFlowManager {
private final Scanner scanner;
private final InputView inputView;
private final OutputView outputView;
private final RacingController racingController;
public GameFlowManager(Scanner scanner) {
this.scanner = scanner;
inputView = initInputView();
outputView = new OutputView();
racingController = initRacingController();
}
public void doGame(){
Cars cars = inputCarsWithMessage();
RaceCount raceCount = inputRaceCountWithMessage();
String allRaceResult = racingController.runAllRace(cars, raceCount);
WinningCarNames winningCarNames = racingController.pickWinningCarNames(cars,raceCount);
outputView.displayResultAll(allRaceResult,winningCarNames);
}
private RaceCount inputRaceCountWithMessage() {
outputView.displayInputRaceCountMessage();
return inputView.inputRaceCount();
}
private Cars inputCarsWithMessage() {
outputView.displayInputCarsMessage();
return inputView.inputCars();
}
private static RacingController initRacingController() {
return new RacingController(
initRaceAllOperator(),
new WinningCarChecker()
);
}
private static RaceAllOperator initRaceAllOperator() {
return new RaceAllOperator(initRaceOnceOperator());
}
private static RaceOnceOperator initRaceOnceOperator() {
return new RaceOnceOperator(new RandomNumberGenerator());
}
private InputView initInputView() {
return new InputView(new InputParser(),scanner);
}
}