-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathRaceOnceOperator.java
More file actions
49 lines (40 loc) · 1.32 KB
/
RaceOnceOperator.java
File metadata and controls
49 lines (40 loc) · 1.32 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 model;
import model.domain.Car;
import model.domain.Cars;
import model.domain.RaceCount;
import validation.RaceValidator;
public class RaceOnceOperator {
private static final int FORWARD_STANDARD_NUMBER = 4;
private final NumberGenerator numberGenerator;
public RaceOnceOperator(NumberGenerator numberGenerator) {
this.numberGenerator = numberGenerator;
}
public void race(Cars cars,RaceCount raceCount){
RaceValidator.validateRaceOnce(cars,raceCount);
cars.playCars().forEach(
car -> {
doForwardOrStop(car);
}
);
}
private void doForwardOrStop(Car car) {
int randomNumber = numberGenerator.getRandomNumber();
if(possibleForward(randomNumber)){
car.raceDistance().plus();
}
}
private static boolean possibleForward(int randomNumber) {
return randomNumber >= FORWARD_STANDARD_NUMBER;
}
protected StringBuilder generateRaceOnceStatus(Cars cars) {
StringBuilder sb= new StringBuilder();
for(Car car : cars.playCars()){
sb.append(car.carName().value());
sb.append(" : ");
sb.append(car.raceDistance().getImageWithBars());
sb.append("\n");
}
sb.append("\n");
return sb;
}
}