|
- package de.hems.trafficsim;
-
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Observable;
-
- public class Track extends Observable {
- protected List<Vehicle> vehicles;
- protected float trackLength;
-
- public List<Vehicle> getVehicles() {
- return vehicles;
- }
-
- public float getTrackLength() {
- return trackLength;
- }
-
- public Track(int numberVehicles, float trackLength) {
- this.trackLength = trackLength;
- this.vehicles = createVehiclesList(numberVehicles);
-
- }
-
- protected List<Vehicle> createVehiclesList(int numberVehicles){
- List<Vehicle> result = new ArrayList<>();
- for(int i=0;i<numberVehicles;i++){
- Vehicle vehicle = new Vehicle(i, i, 5, 0.2f, this.trackLength);
- result.add(vehicle);
- }
-
- return result;
- }
-
- public void timeElapse(float timeStep) {
- for(int i=0; i<vehicles.size();i++) {
- Vehicle v = vehicles.get(i);
- int forerunnerIndex = i + 1;
- if (forerunnerIndex >= vehicles.size()) {
- forerunnerIndex -= vehicles.size();
- }
- Vehicle forerunner = vehicles.get(forerunnerIndex);
- float distanceForerunner = forerunner.getPosition() - v.getPosition() - 1;
- if(distanceForerunner < 0.0){
- distanceForerunner += this.trackLength;
- }
- v.updateVelocity(distanceForerunner);
- }
-
- for(Vehicle v: vehicles){
- v.timeElapse(50);
- }
-
- this.setChanged();
- this.notifyObservers(this);
- this.clearChanged();
- }
- }
|