Hackathon/code/functions.py

134 lines
5.4 KiB
Python
Raw Normal View History

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:
2024-07-08 12:43:39 +02:00
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()
2024-07-09 14:41:33 +02:00
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()