package de.hems.trafficsim; import java.util.Random; public class Vehicle { protected int id; protected float position; protected float curVelocity; protected float maxVelocity; protected float brakeProp; protected float trackLength; public Vehicle(int id, int position, float maxVelocity, float brakeProp, float trackLength) { this.id = id; this.position = position; this.maxVelocity = maxVelocity; this.brakeProp = brakeProp; this.curVelocity = 0; this.trackLength = trackLength; } public float getPosition() { return position; } public float getCurVelocity() { return curVelocity; } public float getMaxVelocity() { return maxVelocity; } public void updateVelocity(float distanceForerunner, float timeStep) { Random random = new Random(); float r = random.nextFloat(); if (curVelocity < maxVelocity) { curVelocity = curVelocity + 1*timeStep; } if (r < brakeProp && curVelocity > 0) { curVelocity = getCurVelocity() - 1; if (curVelocity < 0) curVelocity = 0; } float distance = this.curVelocity * timeStep; if (distance > distanceForerunner) { curVelocity = distanceForerunner/timeStep; } } public void timeElapse(float timeStep) { position = (position + curVelocity*timeStep) % this.trackLength; } }