-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSimulator.java
More file actions
executable file
·67 lines (57 loc) · 1.6 KB
/
Copy pathSimulator.java
File metadata and controls
executable file
·67 lines (57 loc) · 1.6 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
package edu.brandeis.cs12b.pa4;
import java.util.ArrayList;
import java.util.ConcurrentModificationException;
import edu.brandeis.cs12b.pa4.provided.City;
import edu.brandeis.cs12b.pa4.provided.Direction;
import edu.brandeis.cs12b.pa4.provided.Point;
public class Simulator {
private City city;
protected ArrayList <Vehicle> vList;
protected ArrayList <Vehicle> removedList;
/**
* Creates a new simulation for a city
* @param city to be simulated
*/
public Simulator(City city){
this.city = city;
vList = new ArrayList<Vehicle>();
removedList = new ArrayList<Vehicle>();
}
protected Simulator(){
}
/**
* Move all vehicles in the city
* @param numberOfSteps the number of times each vehicle should move
*/
public void step(int numberOfSteps) {
for (int i=numberOfSteps;i>0;i--) {
for (Vehicle v:vList) {
if (!(v.move())) {
removedList.add(v);
}
}
vList.removeAll(removedList);
//System.out.println(city);
}
}
/**
* Places a Vehicle in the city
* @param vehicle to place in the city
* @param location to place the vehicle in the city
* @return true if vehicle is successfully placed, false if not
*/
public boolean placeVehicle(Vehicle vehicle, Point location, Direction facing){
vList.add(vehicle);
return (vehicle.place(city, location, facing));
}
/**
* Check to see if the Simulation's city is clear
* @return true if the city is clear, false if not
*/
public boolean isClear(){
return this.city.isClear();
}
public String toString(){
return this.city.toString();
}
}