61 lines
3.1 KiB
Python
61 lines
3.1 KiB
Python
|
import pygame
|
||
|
|
||
|
|
||
|
|
||
|
# Laternen durchgehen, abgleichen mit der Laterne die wir haben, sobald die in der gleichen Straße sind,
|
||
|
# findet ein Vergleich statt, die id der Laterne in der Kreuzung, die erste oder die letzte ist in der Straße
|
||
|
# Jenachdem werden dann die zwei folgenden Laternen angeschalten (id: 2 und 3) oder die zwei zuvorstehenden
|
||
|
# Laternen (id: alte_id -1, alte_id - 2). Und jenachdem gedimmed geschaltet.
|
||
|
|
||
|
def light_street_when_in_intersection(lanterns, lantern_id, street):
|
||
|
for lantern in lanterns:
|
||
|
if lantern.street == street:
|
||
|
if lantern_id == 1:
|
||
|
if lantern.id == 2:
|
||
|
lantern.light_up(176, 179, 0, 255)
|
||
|
if lantern.id == 3:
|
||
|
lantern.light_up(176, 179, 0, 128)
|
||
|
else:
|
||
|
if lantern.id == lantern_id - 1:
|
||
|
lantern.light_up(176, 179, 0, 255)
|
||
|
if lantern.id == lantern_id - 2:
|
||
|
lantern.light_up(176, 179, 0, 128)
|
||
|
|
||
|
|
||
|
# Funktion um alle Laternen einer Kreuzung auf die gleiche Farbe/Helligkeit zu dimmen
|
||
|
def light_intersection_dimmed(lanterns, crossing_id, alpha):
|
||
|
for lantern in lanterns:
|
||
|
if lantern.crossing_id == crossing_id:
|
||
|
lantern.light_up(176, 179, 0, alpha)
|
||
|
|
||
|
|
||
|
def check_sensor(collisions, lanterns):
|
||
|
# Detektoren, welche aktiviert wurden durchgehen und mit allen Laternen abgleichen
|
||
|
for detector in collisions:
|
||
|
for lantern in lanterns:
|
||
|
|
||
|
# Wenn Kreuzungsdetektor betreten wird, komplette Kreuzung aufleuchten lassen
|
||
|
if detector.crossing_id == lantern.crossing_id and detector.crossing_id is not None:
|
||
|
lantern.light_up(255, 255, 0, 255)
|
||
|
|
||
|
# Ankreuzende Straßen der Kreuzung, beleuchten
|
||
|
light_street_when_in_intersection(lanterns, lantern.id, lantern.street)
|
||
|
|
||
|
# Checken ob Laterne in der selben Straße steht, dann zum leuchten bringen falls straße und id gleich ist
|
||
|
# Angrenzende Laternen anhand der id rausfinden und gedimmed anschalten
|
||
|
if lantern.street == detector.street:
|
||
|
|
||
|
# Checken ob direkte Nachbar Laterne oder Laterne an zweiter Stelle
|
||
|
#Falls sich die Lampe in der Kreuzung befindet, soll die ganze Kreuzung gedimmed an sein
|
||
|
if lantern.id == detector.id - 1 or lantern.id == detector.id + 1:
|
||
|
lantern.light_up(176, 179, 0, 255)
|
||
|
if lantern.crossing_id is not None:
|
||
|
light_intersection_dimmed(lanterns, lantern.crossing_id, 255)
|
||
|
if lantern.id == detector.id - 2 or lantern.id == detector.id + 2:
|
||
|
lantern.light_up(176, 179, 0, 128)
|
||
|
if lantern.crossing_id is not None:
|
||
|
light_intersection_dimmed(lanterns, lantern.crossing_id, 128)
|
||
|
|
||
|
# Direkt zugehörige Laterne anmachen
|
||
|
if lantern.id == detector.id:
|
||
|
lantern.light_up(255, 255, 0, 255)
|