ajouté les edges internes

This commit is contained in:
leo 2022-02-10 15:54:44 +01:00
parent 9ad5f08613
commit 64dcf74783
Signed by: leo
GPG Key ID: 0DD993BFB2B307DB
3 changed files with 23 additions and 13 deletions

26
Car.py
View File

@ -4,8 +4,8 @@ import math
class Car: class Car:
def initPath(self): def initPath(self):
startEdge=self.map.getEdge(self.route[self.index]) startEdge=self.route[self.index]
nextEdge=self.map.getEdge(self.route[self.index+1]) nextEdge=self.route[self.index+1]
inverted=not (startEdge.getToNode()==nextEdge.getFromNode() or startEdge.getToNode()==nextEdge.getToNode()) inverted=not (startEdge.getToNode()==nextEdge.getFromNode() or startEdge.getToNode()==nextEdge.getToNode())
@ -18,14 +18,20 @@ class Car:
def __init__(self,carID,route,parentMap,surface): def __init__(self,carID,route,parentMap,surface):
self.id=carID self.id=carID
self.route=route
self.map=parentMap self.map=parentMap
self.index=0 self.index=0
self.laneInd=0 self.laneInd=0
self.route=[]
startEdge=self.map.getEdge(route[0])
nextEdge=self.map.getEdge(route[1]) 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.initPath()
self.pos=list(self.laneShape[0]) self.pos=list(self.laneShape[0])
@ -39,7 +45,7 @@ class Car:
pg.draw.circle(self.surf,col,self.map.convertPos(self.pos),5) pg.draw.circle(self.surf,col,self.map.convertPos(self.pos),5)
def conduite(self): 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 vleader=vmax # vitesse de la voiture leader
bleader=15 bleader=15
vbar=(self.v+vleader)/2 vbar=(self.v+vleader)/2
@ -61,10 +67,10 @@ class Car:
lgt-=l lgt-=l
pos=list(self.laneShape[-1]) pos=list(self.laneShape[-1])
self.laneInd+=1 self.laneInd+=1
if(self.laneInd>=len(self.laneShape)-2): if(self.laneInd>=len(self.laneShape)-1):
self.laneInd=0 self.laneInd=0
self.index+=1 self.index+=1
if(self.index>=len(self.route)-2): if(self.index>=len(self.route)-1):
self.index=0 self.index=0
self.initPath() self.initPath()

View File

@ -10,7 +10,8 @@ class CarController:
def fromPath(self,path): def fromPath(self,path):
for vehicle in sumolib.xml.parse(path,"vehicle"): 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): def update(self):
for car in self.cars: for car in self.cars:

7
Map.py
View File

@ -11,7 +11,7 @@ class Map:
self.surf=surface self.surf=surface
def fromPath(self,path): 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): def text(self,text,pos,font):
img = font.render(text,True,(255,255,255)) img = font.render(text,True,(255,255,255))
@ -38,7 +38,10 @@ class Map:
def getNode(self,nodeID): def getNode(self,nodeID):
return self.net.getNode(nodeID) return self.net.getNode(nodeID)
def getLane(self,laneID):
return self.net.getLane(laneID)
def convertPos(self,pos): def convertPos(self,pos):
bounds=self.net.getBoundary() bounds=self.net.getBoundary()
bounds[0]-=20 bounds[0]-=20