Du brauchst zuallererst mal eine Auto-Klasse. Das Auto hat ne Geschwindigkeit, ne Trödelwahrscheinlichkeit, etc.
Ein Auto kann beschleunigen, bremsen, trödeln und fahren. Der interessante Schritt ist das Bremsen: Ein Auto muss erkennen können, ob "vorne Platz ist". Das kann man auf mehrere Arten tun. 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.
Es gibt noch mehr Möglichkeiten: Man könnte das tatsächlich als Zellulärautomaten implementieren. Also nur die Zellen, nicht aber die Autos modellieren. Wüde ich aber nicht vorschlagen, wenn du dazu keinen besonderen grund hast.
Sehr einfach, aber nicht mehr objektorientiert wäre der Ansatz die Straße als Array of Integer zu sehen, wobei jedes Element eine Zelle darstellt. In jedem Arrayelement steht die Geschwindigkeit und falls kein Auto drauf ist, -1. Du bräuchtest dann zwei Arrays. Ein aktuelles und eins für den nächsten Schritt.
mfg
Christian