package de.hems.trafficsim; import java.util.ArrayList; import java.util.List; import java.util.Observable; public class Track extends Observable { protected List vehicles; protected float trackLength; public List getVehicles() { return vehicles; } public float getTrackLength() { return trackLength; } public Track(int numberVehicles, float trackLength) { this.vehicles = createVehiclesList(numberVehicles); this.trackLength = trackLength; } protected List createVehiclesList(int numberVehicles){ List result = new ArrayList<>(); for(int i=0;i= 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(); } }