diff --git a/Car.py b/Car.py index ab02742..0399e26 100644 --- a/Car.py +++ b/Car.py @@ -4,8 +4,8 @@ import math class Car: def initPath(self): - startEdge=self.map.getEdge(self.route[self.index]) - nextEdge=self.map.getEdge(self.route[self.index+1]) + startEdge=self.route[self.index] + nextEdge=self.route[self.index+1] inverted=not (startEdge.getToNode()==nextEdge.getFromNode() or startEdge.getToNode()==nextEdge.getToNode()) @@ -18,14 +18,20 @@ class Car: def __init__(self,carID,route,parentMap,surface): self.id=carID - self.route=route self.map=parentMap self.index=0 self.laneInd=0 - - startEdge=self.map.getEdge(route[0]) - nextEdge=self.map.getEdge(route[1]) - + self.route=[] + + route=list(map(self.map.getEdge,route)) + + for r,rn in zip(route,route[1:]): + self.route.append(r) + conn=r.getConnections(rn)[0] # Si il trouve pas de connection c'est la merde + edge=self.map.getLane(conn.getViaLaneID()).getEdge() + self.route.append(edge) + + self.initPath() self.pos=list(self.laneShape[0]) @@ -39,7 +45,7 @@ class Car: pg.draw.circle(self.surf,col,self.map.convertPos(self.pos),5) def conduite(self): - vmax=10 # vitesse max sur la route actuelle + vmax=50 # vitesse max sur la route actuelle vleader=vmax # vitesse de la voiture leader bleader=15 vbar=(self.v+vleader)/2 @@ -61,10 +67,10 @@ class Car: lgt-=l pos=list(self.laneShape[-1]) self.laneInd+=1 - if(self.laneInd>=len(self.laneShape)-2): + if(self.laneInd>=len(self.laneShape)-1): self.laneInd=0 self.index+=1 - if(self.index>=len(self.route)-2): + if(self.index>=len(self.route)-1): self.index=0 self.initPath() diff --git a/CarController.py b/CarController.py index 8e16d0d..9363270 100644 --- a/CarController.py +++ b/CarController.py @@ -10,7 +10,8 @@ class CarController: def fromPath(self,path): for vehicle in sumolib.xml.parse(path,"vehicle"): - self.cars.append(Car(vehicle.id,vehicle.route[0].edges.split(),self.map,self.surf)) + route=vehicle.route[0].edges.split() + self.cars.append(Car(vehicle.id,route,self.map,self.surf)) def update(self): for car in self.cars: diff --git a/Map.py b/Map.py index 8d57aa8..79827bd 100644 --- a/Map.py +++ b/Map.py @@ -11,7 +11,7 @@ class Map: self.surf=surface def fromPath(self,path): - self.net = sumolib.net.readNet(path,withInternal=True) + self.net = sumolib.net.readNet(path,withInternal=True,withConnections=True) def text(self,text,pos,font): img = font.render(text,True,(255,255,255)) @@ -38,7 +38,10 @@ class Map: def getNode(self,nodeID): return self.net.getNode(nodeID) - + + def getLane(self,laneID): + return self.net.getLane(laneID) + def convertPos(self,pos): bounds=self.net.getBoundary() bounds[0]-=20