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) def scene_1(screen, detectors, streets, lanterns, player): screen.fill("Grey") detectors.draw(screen) streets.draw(screen) lanterns.draw(screen) player.draw(screen) player.update() for lantern in lanterns: lantern.reset_light() # Check for collision and light up corresponding lantern collisions = pygame.sprite.spritecollide(player.sprite, detectors, False) check_sensor(collisions, lanterns) if pygame.sprite.spritecollide(player.sprite, streets, False): player.sprite.set_back()# def scene_2(screen, detectors, streets, lanterns, player): screen.fill("Pink") detectors.draw(screen) streets.draw(screen) lanterns.draw(screen) player.draw(screen) player.update() for lantern in lanterns: lantern.reset_light() # Check for collision and light up corresponding lantern collisions = pygame.sprite.spritecollide(player.sprite, detectors, False) check_sensor(collisions, lanterns) if pygame.sprite.spritecollide(player.sprite, streets, False): player.sprite.set_back() def scene_3(screen, detectors, streets, lanterns, player): screen.fill("Pink") detectors.draw(screen) streets.draw(screen) lanterns.draw(screen) player.draw(screen) player.update() for lantern in lanterns: lantern.reset_light() # Check for collision and light up corresponding lantern collisions = pygame.sprite.spritecollide(player.sprite, detectors, False) check_sensor(collisions, lanterns) if pygame.sprite.spritecollide(player.sprite, streets, False): player.sprite.set_back() def scene_4(screen, detectors, streets, lanterns, player): screen.fill("Pink") detectors.draw(screen) streets.draw(screen) lanterns.draw(screen) player.draw(screen) player.update() for lantern in lanterns: lantern.reset_light() # Check for collision and light up corresponding lantern collisions = pygame.sprite.spritecollide(player.sprite, detectors, False) check_sensor(collisions, lanterns) if pygame.sprite.spritecollide(player.sprite, streets, False): player.sprite.set_back()