Hallo zusammen!
Ich habe ein relativ komplexes Facharbeitsthema und versuche deswegen mein Problem so weit wie möglich zu vereinfachen.
Dazu muss man sich vorstellen, das ich einen Traffic Simulator schreibe, in dem es eine obere und eine untere Spur gibt. Da auf der unteren Spur gebaut wird, müssen alle Autos von unten auf die obere Spur wechseln. Mein Prinzip, nachdem ausgewertet wird ob man die Spur wechseln kann, ist relativ einfach. Ist über Auto a + 5m hinten und + 5m vorne genug Platz um zu wechseln, dann wechsele die Spur.
Ich muss dazu sagen das ich diesem Prinzip noch skeptisch gegenüber stehe, aber ein Test ist es wert!
Beide Spuren habe ich mit einer ArrayList umgesetzt
Wenn jetzt das Auto wechseln soll, muss ich die Lücke in carsUpperLane finde, damit ich das Auto dort an den Index einfügen kann und aus carsLowerLane löschen kann.
Mein Code dazu sieht so aus:
Mein Problem ist, dass meine Autos auf einmal stehen bleiben und nichts mehr machen. Seht ihr vielleicht einen Fehler?
Es wäre sehr nett ihr euch auch ein paar Gedanken machen könnten :toll:
Danke!
Ich habe ein relativ komplexes Facharbeitsthema und versuche deswegen mein Problem so weit wie möglich zu vereinfachen.
Dazu muss man sich vorstellen, das ich einen Traffic Simulator schreibe, in dem es eine obere und eine untere Spur gibt. Da auf der unteren Spur gebaut wird, müssen alle Autos von unten auf die obere Spur wechseln. Mein Prinzip, nachdem ausgewertet wird ob man die Spur wechseln kann, ist relativ einfach. Ist über Auto a + 5m hinten und + 5m vorne genug Platz um zu wechseln, dann wechsele die Spur.
Ich muss dazu sagen das ich diesem Prinzip noch skeptisch gegenüber stehe, aber ein Test ist es wert!
Beide Spuren habe ich mit einer ArrayList umgesetzt
Code:
ArrayList<IDMCar> carsLowerLane und ArrayList<IDMCar> carsUpperLane
Mein Code dazu sieht so aus:
Java:
for(int i = 1; i < carsLowerLane.size(); i++) {
IDMCar lowerCar = carsLowerLane.get(i);
double lowerCarRear = (lowerCar.getX() - lowerCar.getLength())-5;
Rectangle lowerCarRect = new Rectangle((int)lowerCarRear, 0, (int)lowerCar.getLength()+5, 1);
boolean intersects = false;
for(int j = 0; j < carsUpperLane.size(); j++) {
IDMCar upperCar = carsUpperLane.get(j);
double upperCarRear = (upperCar.getX() - upperCar.getLength());
Rectangle upperCarRect = new Rectangle((int)upperCarRear, 0, (int)upperCar.getLength(), 1);
if(lowerCarRect.intersects(upperCarRect)) {
intersects = true;
}
}
if(!intersects) {
for(int j = 1; j < carsUpperLane.size(); j++) {
IDMCar upperCar = carsUpperLane.get(j);
if(upperCar.getX() < lowerCarRear) {
carsUpperLane.add(carsUpperLane.indexOf(upperCar), lowerCar);
lowerCar.setY(190);
carsLowerLane.remove(lowerCar);
}
}
}
}
Mein Problem ist, dass meine Autos auf einmal stehen bleiben und nichts mehr machen. Seht ihr vielleicht einen Fehler?
Es wäre sehr nett ihr euch auch ein paar Gedanken machen könnten :toll:
Danke!