Beispiel #1
0
def main():
    screen_width = 1200
    screen_height = 800
    lane_width = 80
    x_cross = screen_width / 2
    y_cross = screen_height / 2

    lane1 = Lane(coordinates=[
        0, y_cross - lane_width / 2, x_cross - lane_width,
        y_cross - lane_width / 2
    ],
                 speedLimit=120,
                 curveType="line",
                 spawnRate=0.2,
                 width=lane_width)
    lane2 = Lane(coordinates=[
        x_cross - lane_width, y_cross + lane_width / 2, 0,
        y_cross + lane_width / 2
    ],
                 speedLimit=120,
                 curveType="line",
                 width=lane_width)
    lane3 = Lane(coordinates=[
        x_cross - lane_width / 2, screen_height, x_cross - lane_width / 2,
        y_cross + lane_width
    ],
                 speedLimit=120,
                 curveType="line",
                 spawnRate=0.2,
                 width=lane_width)
    lane4 = Lane(coordinates=[
        x_cross + lane_width / 2, y_cross + lane_width,
        x_cross + lane_width / 2, screen_height
    ],
                 speedLimit=120,
                 curveType="line",
                 width=lane_width)
    lane5 = Lane(coordinates=[
        screen_width, y_cross + lane_width / 2, x_cross + lane_width,
        y_cross + lane_width / 2
    ],
                 speedLimit=120,
                 curveType="line",
                 spawnRate=0.2,
                 width=lane_width)
    lane6 = Lane(coordinates=[
        x_cross + lane_width, y_cross - lane_width / 2, screen_width,
        y_cross - lane_width / 2
    ],
                 speedLimit=120,
                 curveType="line",
                 width=lane_width)
    lane7 = Lane(coordinates=[
        x_cross + lane_width / 2, 0, x_cross + lane_width / 2,
        y_cross - lane_width
    ],
                 speedLimit=120,
                 curveType="line",
                 spawnRate=0.2,
                 width=lane_width)
    lane8 = Lane(coordinates=[
        x_cross - lane_width / 2, y_cross - lane_width,
        x_cross - lane_width / 2, 0
    ],
                 speedLimit=120,
                 curveType="line",
                 width=lane_width)
    mergeLane4 = Lane(coordinates=[
        x_cross + lane_width / 2, y_cross - lane_width,
        x_cross + lane_width / 2, y_cross + lane_width
    ],
                      speedLimit=120,
                      curveType="merge",
                      nextLanes=[(lane4, 1)],
                      width=lane_width,
                      crosswalk_width=0)
    lane14 = Lane(coordinates=[
        x_cross - lane_width, y_cross - lane_width / 2,
        x_cross + lane_width / 2, y_cross + lane_width
    ],
                  speedLimit=120,
                  curveType="ellipsis",
                  isClockWise=0,
                  nextLanes=[(lane4, 1)],
                  parentLane=mergeLane4,
                  width=lane_width,
                  crosswalk_width=0)
    lane16 = Lane(coordinates=[
        x_cross - lane_width, y_cross - lane_width / 2, x_cross + lane_width,
        y_cross - lane_width / 2
    ],
                  speedLimit=120,
                  curveType="line",
                  nextLanes=[(lane6, 1)],
                  width=lane_width,
                  crosswalk_width=0)
    lane18 = Lane(coordinates=[
        x_cross - lane_width, y_cross - lane_width / 2,
        x_cross - lane_width / 2, y_cross - lane_width
    ],
                  speedLimit=120,
                  curveType="ellipsis",
                  isClockWise=1,
                  nextLanes=[(lane8, 1)],
                  width=lane_width,
                  crosswalk_width=0)
    lane36 = Lane(coordinates=[
        x_cross - lane_width / 2, y_cross + lane_width, x_cross + lane_width,
        y_cross - lane_width / 2
    ],
                  speedLimit=120,
                  curveType="ellipsis",
                  isClockWise=0,
                  nextLanes=[(lane6, 1)],
                  width=lane_width,
                  crosswalk_width=0)
    lane38 = Lane(coordinates=[
        x_cross - lane_width / 2, y_cross + lane_width,
        x_cross - lane_width / 2, y_cross - lane_width
    ],
                  speedLimit=120,
                  curveType="line",
                  nextLanes=[(lane8, 1)],
                  width=lane_width,
                  crosswalk_width=0)
    lane31 = Lane(coordinates=[
        x_cross - lane_width / 2, y_cross + lane_width, x_cross - lane_width,
        y_cross + lane_width / 2
    ],
                  speedLimit=120,
                  curveType="ellipsis",
                  isClockWise=1,
                  nextLanes=[(lane2, 1)],
                  width=lane_width,
                  crosswalk_width=0)
    lane58 = Lane(coordinates=[
        x_cross + lane_width, y_cross + lane_width / 2,
        x_cross - lane_width / 2, y_cross - lane_width
    ],
                  speedLimit=120,
                  curveType="ellipsis",
                  isClockWise=0,
                  nextLanes=[(lane8, 1)],
                  width=lane_width,
                  crosswalk_width=0)
    lane52 = Lane(coordinates=[
        x_cross + lane_width, y_cross + lane_width / 2, x_cross - lane_width,
        y_cross + lane_width / 2
    ],
                  speedLimit=120,
                  curveType="line",
                  nextLanes=[(lane2, 1)],
                  width=lane_width,
                  crosswalk_width=0)
    lane54 = Lane(coordinates=[
        x_cross + lane_width, y_cross + lane_width / 2,
        x_cross + lane_width / 2, y_cross + lane_width
    ],
                  speedLimit=120,
                  curveType="ellipsis",
                  isClockWise=1,
                  nextLanes=[(lane4, 1)],
                  parentLane=mergeLane4,
                  width=lane_width,
                  crosswalk_width=0)
    lane72 = Lane(coordinates=[
        x_cross + lane_width / 2, y_cross - lane_width, x_cross - lane_width,
        y_cross + lane_width / 2
    ],
                  speedLimit=120,
                  curveType="ellipsis",
                  isClockWise=0,
                  nextLanes=[(lane2, 1)],
                  width=lane_width,
                  crosswalk_width=0)
    lane74 = Lane(coordinates=[
        x_cross + lane_width / 2, y_cross - lane_width,
        x_cross + lane_width / 2, y_cross + lane_width
    ],
                  speedLimit=120,
                  curveType="line",
                  nextLanes=[(lane4, 1)],
                  parentLane=mergeLane4,
                  width=lane_width,
                  crosswalk_width=0)
    lane76 = Lane(coordinates=[
        x_cross + lane_width / 2, y_cross - lane_width, x_cross + lane_width,
        y_cross - lane_width / 2
    ],
                  speedLimit=120,
                  curveType="ellipsis",
                  isClockWise=1,
                  nextLanes=[(lane6, 1)],
                  width=lane_width,
                  crosswalk_width=0)
    lane1.nextLanes = [(lane14, 1), (lane16, 0), (lane18, 0)]
    lane3.nextLanes = [(lane36, 0.2), (lane38, 0), (lane31, 1)]
    lane5.nextLanes = [(lane58, 0), (lane52, 0), (lane54, 1)]
    lane7.nextLanes = [(lane72, 0), (lane74, 1), (lane76, 0)]
    light1 = Light()
    lane1.light = light1
    light1.color = color.Color.RED
    light3 = Light()
    lane3.light = light3
    light3.color = color.Color.RED
    light5 = Light()
    lane5.light = light5
    light5.color = color.Color.RED
    light7 = Light()
    lane7.light = light7
    light7.color = color.Color.RED
    light_pedestrian1 = Light()
    light_pedestrian1.color = color.Color.RED
    light_pedestrian2 = Light()
    light_pedestrian2.color = color.Color.RED
    light_pedestrian3 = Light()
    light_pedestrian3.color = color.Color.RED
    light_pedestrian4 = Light()
    light_pedestrian4.color = color.Color.RED
    config = Configuration(initList=[[0, 1, 2], [4, 5, 6], [8, 9, 10],
                                     [12, 13, 14]],
                           lights=[
                               light1, light1, light1, light_pedestrian1,
                               light3, light3, light3, light_pedestrian2,
                               light5, light5, light5, light_pedestrian3,
                               light7, light7, light7, light_pedestrian4
                           ])
    tm = TrafficMaster([config])
    tm.lanes = [
        lane1, lane2, lane3, lane4, lane5, lane6, lane7, lane8, mergeLane4,
        lane14, lane16, lane18, lane36, lane38, lane31, lane58, lane52, lane54,
        lane72, lane74, lane76
    ]

    tm.startSimulation(0.01)
Beispiel #2
0
def main2():
    screen_height = 800
    screen_width = 1200
    lane_width = 50
    x_cross = screen_width / 2
    y_cross = screen_height / 2
    cross_size = 100

    laneS1 = Lane(coordinates=[
        x_cross - lane_width, y_cross - cross_size, x_cross - lane_width, 0
    ],
                  speedLimit=120,
                  curveType="line",
                  width=lane_width)
    laneS2 = Lane(coordinates=[x_cross, 0, x_cross, y_cross - cross_size],
                  speedLimit=120,
                  curveType="line",
                  spawnRate=0,
                  width=lane_width)
    laneS3 = Lane(coordinates=[
        x_cross + lane_width, 0, x_cross + lane_width, y_cross - cross_size
    ],
                  speedLimit=120,
                  curveType="line",
                  spawnRate=0.2,
                  width=lane_width)
    laneN3 = Lane(coordinates=[
        x_cross - lane_width, screen_height, x_cross - lane_width,
        y_cross + cross_size
    ],
                  speedLimit=120,
                  curveType="line",
                  spawnRate=0,
                  width=lane_width)
    laneN2 = Lane(
        coordinates=[x_cross, screen_height, x_cross, y_cross + cross_size],
        speedLimit=120,
        curveType="line",
        spawnRate=0,
        width=lane_width)
    laneN1 = Lane(coordinates=[
        x_cross + lane_width, y_cross + cross_size, x_cross + lane_width,
        screen_height
    ],
                  speedLimit=120,
                  curveType="line",
                  width=lane_width)
    laneV3 = Lane(coordinates=[
        0, y_cross - lane_width, x_cross - cross_size, y_cross - lane_width
    ],
                  speedLimit=120,
                  curveType="line",
                  spawnRate=0,
                  width=lane_width)
    laneV2 = Lane(coordinates=[0, y_cross, x_cross - cross_size, y_cross],
                  speedLimit=120,
                  curveType="line",
                  spawnRate=0.2,
                  width=lane_width)
    laneV1 = Lane(coordinates=[
        x_cross - cross_size, y_cross + lane_width, 0, y_cross + lane_width
    ],
                  speedLimit=120,
                  curveType="line",
                  width=lane_width)
    laneO1 = Lane(coordinates=[
        x_cross + cross_size, y_cross - lane_width, screen_width,
        y_cross - lane_width
    ],
                  speedLimit=120,
                  curveType="line",
                  width=lane_width)
    laneO2 = Lane(
        coordinates=[screen_width, y_cross, x_cross + cross_size, y_cross],
        speedLimit=120,
        curveType="line",
        spawnRate=0,
        width=lane_width)
    laneO3 = Lane(coordinates=[
        screen_width, y_cross + lane_width, x_cross + cross_size,
        y_cross + lane_width
    ],
                  speedLimit=120,
                  curveType="line",
                  spawnRate=0,
                  width=lane_width)

    laneSVN = Lane(coordinates=[
        x_cross + lane_width, y_cross - cross_size, x_cross + lane_width,
        y_cross + cross_size
    ],
                   speedLimit=120,
                   curveType="merge",
                   width=lane_width,
                   nextLanes=[(laneN1, 1)])

    laneNOS = Lane(coordinates=[
        x_cross - lane_width, y_cross + cross_size, x_cross - lane_width,
        y_cross - cross_size
    ],
                   speedLimit=120,
                   curveType="merge",
                   width=lane_width,
                   nextLanes=[(laneS1, 1)])

    laneVNO = Lane(coordinates=[
        x_cross - cross_size, y_cross - lane_width, x_cross + cross_size,
        y_cross - lane_width
    ],
                   speedLimit=120,
                   curveType="merge",
                   width=lane_width,
                   nextLanes=[(laneO1, 1)])

    laneOSV = Lane(coordinates=[
        x_cross + cross_size, y_cross + lane_width, x_cross - cross_size,
        y_cross + lane_width
    ],
                   speedLimit=120,
                   curveType="merge",
                   width=lane_width,
                   nextLanes=[(laneV1, 1)])

    laneS2V1 = Lane(coordinates=[
        x_cross, y_cross - cross_size, x_cross - cross_size,
        y_cross + lane_width
    ],
                    speedLimit=120,
                    curveType="ellipsis",
                    width=lane_width,
                    isClockWise=0,
                    nextLanes=[(laneV1, 1)],
                    parentLane=laneOSV)
    laneS3N1 = Lane(coordinates=[
        x_cross + lane_width, y_cross - cross_size, x_cross + lane_width,
        y_cross + cross_size
    ],
                    speedLimit=120,
                    curveType="line",
                    width=lane_width,
                    nextLanes=[(laneN1, 1)],
                    parentLane=laneSVN)
    laneS3O1 = Lane(coordinates=[
        x_cross + lane_width, y_cross - cross_size, x_cross + cross_size,
        y_cross - lane_width
    ],
                    speedLimit=120,
                    curveType="ellipsis",
                    width=lane_width,
                    isClockWise=1,
                    nextLanes=[(laneO1, 1)])

    laneV2N1 = Lane(coordinates=[
        x_cross - cross_size, y_cross, x_cross + lane_width,
        y_cross + cross_size
    ],
                    speedLimit=120,
                    curveType="ellipsis",
                    width=lane_width,
                    isClockWise=0,
                    nextLanes=[(laneN1, 1)],
                    parentLane=laneSVN)
    laneV3O1 = Lane(coordinates=[
        x_cross - cross_size, y_cross - lane_width, x_cross + cross_size,
        y_cross - lane_width
    ],
                    speedLimit=120,
                    curveType="line",
                    width=lane_width,
                    nextLanes=[(laneO1, 1)],
                    parentLane=laneVNO)
    laneV3S1 = Lane(coordinates=[
        x_cross - cross_size, y_cross - lane_width, x_cross - lane_width,
        y_cross - cross_size
    ],
                    speedLimit=120,
                    curveType="ellipsis",
                    width=lane_width,
                    isClockWise=1,
                    nextLanes=[(laneS1, 1)])

    laneN2O1 = Lane(coordinates=[
        x_cross, y_cross + cross_size, x_cross + cross_size,
        y_cross - lane_width
    ],
                    speedLimit=120,
                    curveType="ellipsis",
                    width=lane_width,
                    isClockWise=0,
                    nextLanes=[(laneO1, 1)],
                    parentLane=laneVNO)
    laneN3S1 = Lane(coordinates=[
        x_cross - lane_width, y_cross + cross_size, x_cross - lane_width,
        y_cross - cross_size
    ],
                    speedLimit=120,
                    curveType="line",
                    width=lane_width,
                    nextLanes=[(laneS1, 1)],
                    parentLane=laneNOS)
    laneN3V1 = Lane(coordinates=[
        x_cross - lane_width, y_cross + cross_size, x_cross - cross_size,
        y_cross + lane_width
    ],
                    speedLimit=120,
                    curveType="ellipsis",
                    width=lane_width,
                    isClockWise=1,
                    nextLanes=[(laneV1, 1)])

    laneO2S1 = Lane(coordinates=[
        x_cross + cross_size, y_cross, x_cross - lane_width,
        y_cross - cross_size
    ],
                    speedLimit=120,
                    curveType="ellipsis",
                    width=lane_width,
                    isClockWise=0,
                    nextLanes=[(laneS1, 1)],
                    parentLane=laneNOS)
    laneO3V1 = Lane(coordinates=[
        x_cross + cross_size, y_cross + lane_width, x_cross - cross_size,
        y_cross + lane_width
    ],
                    speedLimit=120,
                    curveType="line",
                    width=lane_width,
                    nextLanes=[(laneV1, 1)],
                    parentLane=laneOSV)
    laneO3N1 = Lane(coordinates=[
        x_cross + cross_size, y_cross + lane_width, x_cross + lane_width,
        y_cross + cross_size
    ],
                    speedLimit=120,
                    curveType="ellipsis",
                    width=lane_width,
                    isClockWise=1,
                    nextLanes=[(laneN1, 1)])

    laneS2.nextLanes = [(laneS2V1, 1)]
    laneS3.nextLanes = [(laneS3N1, 1), (laneS3O1, 1)]
    laneV2.nextLanes = [(laneV2N1, 1)]
    laneV3.nextLanes = [(laneV3O1, 0.5), (laneV3S1, 1)]
    laneN2.nextLanes = [(laneN2O1, 1)]
    laneN3.nextLanes = [(laneN3S1, 0.5), (laneN3V1, 1)]
    laneO2.nextLanes = [(laneO2S1, 1)]
    laneO3.nextLanes = [(laneO3N1, 0.5), (laneO3V1, 1)]
    lightN2 = Light()
    laneN2.light = lightN2
    lightN2.color = color.Color.RED
    lightN3 = Light()
    laneN3.light = lightN3
    lightN3.color = color.Color.RED
    lightS2 = Light()
    laneS2.light = lightS2
    lightS2.color = color.Color.RED
    lightS3 = Light()
    laneS3.light = lightS3
    lightS3.color = color.Color.RED
    lightV2 = Light()
    laneV2.light = lightV2
    lightV2.color = color.Color.RED
    lightV3 = Light()
    laneV3.light = lightV3
    lightV3.color = color.Color.RED
    lightO2 = Light()
    laneO2.light = lightO2
    lightO2.color = color.Color.RED
    lightO3 = Light()
    laneO3.light = lightO3
    lightO3.color = color.Color.RED
    light_pedestrian1 = Light()
    light_pedestrian1.color = color.Color.RED
    light_pedestrian2 = Light()
    light_pedestrian2.color = color.Color.RED
    light_pedestrian3 = Light()
    light_pedestrian3.color = color.Color.RED
    light_pedestrian4 = Light()
    light_pedestrian4.color = color.Color.RED
    config = Configuration(initList=[[1, 2], [5, 6], [9, 10], [13, 14]],
                           lights=[
                               lightS2, lightS3, lightS3, light_pedestrian1,
                               lightV2, lightV3, lightV3, light_pedestrian2,
                               lightN2, lightN3, lightN3, light_pedestrian3,
                               lightO2, lightO3, lightO3, light_pedestrian4
                           ])
    tm = TrafficMaster([config])
    tm.lanes = [
        laneN1, laneN2, laneN3, laneS1, laneS2, laneS3, laneV1, laneV2, laneV3,
        laneO1, laneO2, laneO3, laneSVN, laneNOS, laneOSV, laneVNO, laneS3O1,
        laneV3S1, laneN3V1, laneO3N1
    ]
    tm.startSimulation(0.01)