-
Notifications
You must be signed in to change notification settings - Fork 174
Expand file tree
/
Copy pathBaseballController.java
More file actions
50 lines (44 loc) · 1.55 KB
/
BaseballController.java
File metadata and controls
50 lines (44 loc) · 1.55 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
package baseball.controller;
import baseball.domain.ComputerNumbers;
import baseball.domain.Numbers;
import baseball.domain.Result;
import baseball.domain.ResultType;
import baseball.global.exception.CustomException;
import baseball.global.message.InputMessage;
import baseball.view.InputView;
import baseball.view.OutputView;
public class BaseballController {
private final InputView inputView;
private final OutputView outputView;
public BaseballController(InputView inputView, OutputView outputView) {
this.inputView = inputView;
this.outputView = outputView;
}
public void run() {
ComputerNumbers computerNumbers = new ComputerNumbers();
process(computerNumbers);
}
public void process(ComputerNumbers computerNumbers) {
Numbers inputNumbers = requestNumbers();
Result result = new Result(computerNumbers, inputNumbers);
outputView.printlnStrikeAndBall(result);
if (result.getResultType() != ResultType.THREE_STRIKE) {
process(computerNumbers);
return;
}
outputView.printlnThreeStrike();
if (inputView.enterFinishType() == 1) {
run();
}
}
private Numbers requestNumbers() {
outputView.printMessage(InputMessage.INPUT_NUMBERS.getMessage());
try {
Numbers numbers = new Numbers(inputView.enterNumbers());
return numbers;
} catch (CustomException e) {
outputView.printlnMessage(e.getMessage());
return requestNumbers();
}
}
}