Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ss2024:verkehrssimulation [2024/09/29 11:37] LuisJasper |
ss2024:verkehrssimulation [2024/09/29 13:35] (aktuell) LuisJasper |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Verkehrssimulation ====== | ====== Verkehrssimulation ====== | ||
- | |||
- | |||
- | |||
- | [ Noch in Arbeit ] | ||
- | |||
- | |||
Ein Mathesis-Projekt aus dem Sommersemester 2024 \\ von Leonard Jungk, Lina Goethe, Luis Jasper und Manou Lüders | Ein Mathesis-Projekt aus dem Sommersemester 2024 \\ von Leonard Jungk, Lina Goethe, Luis Jasper und Manou Lüders | ||
Zeile 38: | Zeile 32: | ||
==== Programmstruktur ==== | ==== Programmstruktur ==== | ||
- | Das gesamte Programm besteht aus folgenden Dateien: | + | Der Programmcode besteht aus folgenden Dateien: |
* ''main.py'' | * ''main.py'' | ||
* ''Karte.py'' | * ''Karte.py'' | ||
Zeile 47: | Zeile 41: | ||
In den Dateien ''Auto.py'', ''Kreuzung.py'' und ''Strasse.py'' sind die Klassen der jeweiligen Objekte enthalten. In ''Parkplatz.py'' ist die Klasse ''Parkplatz'' enthalten, die, das Verhalten von Autos regelt, die ihr Ziel erreicht haben. In ''main.py'' befindet sich der Kern des Programms und ''karte.py'' steuert die Visualisierung und verknüpft die Objekte. | In den Dateien ''Auto.py'', ''Kreuzung.py'' und ''Strasse.py'' sind die Klassen der jeweiligen Objekte enthalten. In ''Parkplatz.py'' ist die Klasse ''Parkplatz'' enthalten, die, das Verhalten von Autos regelt, die ihr Ziel erreicht haben. In ''main.py'' befindet sich der Kern des Programms und ''karte.py'' steuert die Visualisierung und verknüpft die Objekte. | ||
+ | |||
+ | Daneben werden für das Programm noch die Datei ''Auto_B.png'', das Bild der Autos und ''ARIAL.TTF'' zum Anzeigen Schrift im gleichen Ordner benötigt. | ||
== main == | == main == | ||
Durch Ausführen der Datei ''main.py'' wird das Programm gestartet. Die Datei importiert alle Bestandteile von "Karte" und das Modul Pygame. Zu Beginn werden einige Einstellungen für Pygame festgelegt, anschließend werden die einzelnen Objekte erschaffen.\\ | Durch Ausführen der Datei ''main.py'' wird das Programm gestartet. Die Datei importiert alle Bestandteile von "Karte" und das Modul Pygame. Zu Beginn werden einige Einstellungen für Pygame festgelegt, anschließend werden die einzelnen Objekte erschaffen.\\ | ||
- | Für das Straßennetz wird zuerst ein leeres Dictionary ''strassenbuch'' benötigt, dass alle Straßen-Objekte enthalten wird. Danach werden alle Kreuzungen erschaffen und zu einer Liste ''kreuzungen'' hinzugefügt. Im nächsten Schritt werden über das Aufrufen der Methode ''connect'' auf den Kreuzungen, die Kreuzungen verbunden und Straßen erschaffen. | + | Für das Straßennetz wird zuerst ein leeres Dictionary ''strassenbuch'' benötigt, dass alle Straßen-Objekte enthalten wird. Danach werden alle Kreuzungen erschaffen und zu einer Liste ''kreuzungen'' hinzugefügt. Im nächsten Schritt werden über das Aufrufen der Methode ''connect'' auf den Kreuzungen, die Kreuzungen verbunden und Straßen erschaffen. \\ |
+ | In der Datei sind bereits drei verschiedene Straßennetze als Kommentare angelegt, das aktive ist nicht auskommentiert. Dabei ist Straßennetz 1 das einfachste, Straßennetz 2 ein komplizierteres und STraßennetz 3 dient dem Testen von Kreuzungen. \\ | ||
Danach werden für jede Kreuzung die Ampeln erschaffen und zum Schluss werden die Autos erstellt und zu der Liste ''autos'' hinzugefügt. | Danach werden für jede Kreuzung die Ampeln erschaffen und zum Schluss werden die Autos erstellt und zu der Liste ''autos'' hinzugefügt. | ||
Diese Reihenfolge ist wichtig, da die Objekte jeweils die Existenz von anderen Objekten voraussetzen. \\ | Diese Reihenfolge ist wichtig, da die Objekte jeweils die Existenz von anderen Objekten voraussetzen. \\ | ||
Zeile 66: | Zeile 64: | ||
== Karte == | == Karte == | ||
- | Die Datei ''Karte.py'' ist für die Darstellung der Objekte auf dem Fenster zuständig und regelt die einzelnen Simluationsschritte der Objekte. Sie enthält die Funktionen ''transformiere'', ''schalte_ampeln'', ''bewege_autos'' und ''karte_zeichnen''. | + | Die Datei ''Karte.py'' ist für die Darstellung der Objekte auf dem Fenster zuständig und regelt die einzelnen Simulationsschritte der Objekte. Sie enthält die Funktionen ''transformiere'', ''schalte_ampeln'', ''bewege_autos'' und ''karte_zeichnen''. |
''karte_zeichnen'' erstellt ein Objekt vom Typ Pygame.Surface. Auf dieses wird das skalierte Straßennetz gezeichnet. Da das Straßennetz so auf einer eigenen Oberfläche ist, muss in der Hauptschleife in jedem Durchlauf nur diese Oberfläche auf dem Fenster befestigt und das Straßennetz nicht neu generiert werden. | ''karte_zeichnen'' erstellt ein Objekt vom Typ Pygame.Surface. Auf dieses wird das skalierte Straßennetz gezeichnet. Da das Straßennetz so auf einer eigenen Oberfläche ist, muss in der Hauptschleife in jedem Durchlauf nur diese Oberfläche auf dem Fenster befestigt und das Straßennetz nicht neu generiert werden. | ||
Zeile 444: | Zeile 442: | ||
===17.09.2024=== | ===17.09.2024=== | ||
* Verteilung der Ampeln: gegenüberliegende Ampeln bilden ein Paar, das gleichzeitig grün wird | * Verteilung der Ampeln: gegenüberliegende Ampeln bilden ein Paar, das gleichzeitig grün wird | ||
+ | |||
+ | ===22.09. - 29.09.2024=== | ||
+ | * Dokumentation geschrieben | ||
+ | * Bugs entfernt | ||
+ | * kleinere Optimierungen | ||
+ | |||
+ | |||
===== Vollständiger Programmcode ==== | ===== Vollständiger Programmcode ==== | ||
+ | |||
+ | {{:ss2024:verkehrssimulation.zip| Verkehrssimulation.zip}} | ||
===== Quellen ===== | ===== Quellen ===== |