Я бы порекомендовал вам реализовать Lane
, у которого есть направление движения. Затем реализуйте Road
, который имеет набор точек, путь, определяющий его форму и расстояние, и набор Lane
объектов, которые следуют по этому пути. Вопрос о том, является ли дорога односторонней или двусторонней, и сколько у них полос движения.
В этом случае Car
движется по Road
в заданном направлении, следуя за полосой, в которой он находится. Он может переключаться только на другие полосы, которые имеют совместимые направления движения (то есть, которые движутся в том же направлении направление как автомобиль), если автомобиль не поворачивается.
Вы также можете иметь специальную точку в Road
, называемую Intersection
, которая является точкой подключения для нескольких Lanes
, и каким-то образом указать, к какой Lanes
a Car
можно переходить и когда она находится Intersection
.
Это грубый набросок, но я думаю, что это основные отношения между объектами, которые вы представляете, и которые должны помочь вам начать.