Hallo Christian,
danke für die prompte Reaktion!
Du brauchst zuallererst mal eine Auto-Klasse. Das Auto hat ne Geschwindigkeit, ne Trödelwahrscheinlichkeit, etc.
Ist schon da: TFahrzeug mit V als aktuelle Geschwindigkeit, aktuelle Position (Nr. der Zelle), VMax, Trödelwahrscheinlichkeit und den Methoden Beschleunigen und Bremsen.
Eine Möglichkeit wäre, dass die Autos einfach "auf die Straße gucken", d.h. die Straße fragen "ob noch frei ist" (sowas wie
Code:
distanceTo(road.getNextCar(Self))
).
Die Zellen werden so nicht direkt modelliert. Die Straße hat einfach ne Liste von Autos (nach Position sortiert) und jedes Auto kennt seine Position. Das wäre der schön lesbare objektorientierte Ansatz.
Dieser Ansatz gefällt mir gut -- aber ich habe damit noch Probleme:
Meine TStrasse erzeugt am Anfang sagen wir 10 Fahrzeuge und vergibt allen eine Position und alle anderen Parameter. Im nächsten Schritt werden dann die Modell-Schritte für jedes Fahrzeug ausgeführt:
1. Anz freier Zellen zum Vordermann
2. Beschleunigen
3. Bremsen
4. Trödeln
5. Fahren (Fahrzeuge auf die neuen Positionen gemäß V).
(6. Die Liste aller Fahrzeuge and die Grafik-Abteilung übergeben.)
Mein Problem: Nehmen wir an, ich möchte eine Strecke von 30 Kilometern simulieren. Jedes Strassen-Segment (Zelle) ist 7,5 m lang (es passt genau ein Fahrzeug rein) -- das hiesse 30.000 m / 7,5 m = 4000 Strassen-Segmente. Wo taucht jetzt diese 40000 auf, wenn ich die Zellen selbst nicht modeliere?
Ich hoffe meine Frage ist klar geworden: Ja, Zellen selbst nicht modellieren ist gut -- aber so ganz geht das doch nicht. Ich denke immer noch, ich bräuchte ein Array mit diesen Zellen. Jede dieser Zellen kann drei verschiedene Werte annehmen: 0 = frei, 1 = Auto steht, 2 Auto fährt mit V.
Oder ist das immer noch eine schräge Sicht der Dinge?
Vielen Dank & Gruß
Jazzman