Voraussetzung: Packaging, Objektorientierung und Debugging.
Diese Aufgaben sind gedacht zur Bearbeitung während der Präsenzübung am Dienstag. Eine Abgabe der Lösungen ist nicht vorgesehen, aber viermal im Semester muss die eigene Bearbeitung erklärt werden (und zufriedenstellend Verständnis demonstriert werden), damit das Modul abgeschlossen werden kann. Ist diese Voraussetzung erfüllt, so kann ein konkretes Thema für das Abschlussprojekt (Hausarbeit) festgelegt werden.
Aufgabe 1¶
Sie haben in Aufgabe 1 auf den letzten Blatt Implementierungspläne zur Wirtschaftssimulation im Skript gemacht. Setzen Sie nun eine Idee um, die wenigstens 2 Unterstützer*innen gewinnen konnte.
Das Ziel ist, einfach vertrauter damit zu werden, wie sich einfache Dinge in Python explizit in Syntax übersetzen, also ein bisschen Übung im Implementieren.
Aufgabe 2¶
Sie haben in Aufgabe 2 auf dem letzten Blatt das Python-Projekt ’Wesen’ aus dem Jahre 2003/2013 von GitHub heruntergeladen:
https://
Arbeiten Sie jetzt auf dem aktuellen Stand weiter (git checkout master), denn dort ist die Paketierung schon erledigt und Sie können
sich auf den Inhalt konzentrieren.
Entwickeln Sie einen eigenen “Wesen source” und lassen Sie ihn gegen die anderen antreten — oder beheben Sie Problemstellen im Code und schreiben einen Pull Request dazu. Für den Pull Request lohnt der Abschnitt Beitragen: Ein Issue vorher erspart beiden Seiten Arbeit, und die Definition of Done sagt Ihnen, wann der PR abgabereif ist.
Ein konkreter Kandidat, den das Brownfield-Kapitel im Stand von 2014
gefunden hat: src/Wesen/persistence.py ließ sich nicht einmal parsen
und wurde von keiner anderen Datei importiert. Prüfen Sie, was aus der
Datei inzwischen geworden ist — und ob die Entscheidung die richtige
war.
Aufgabe 3¶
Arbeiten Sie weiter daran, wenn Sie noch nicht fertig geworden sind:
Sie haben auf den letzten Übungsblättern ein CYOA Text-Adventure entwickelt mit geeigneten Datenstrukturen, modularem Code und probabilistischen Elementen (sowie ein Inventar z.B.). Wenn Sie es noch nicht getan haben, ergänzen Sie zu Ihrem Code Type Hints, die Sie mit mypy prüfen sowie Assertions, um Ihre Annahmen über Variablen auszudrücken.
Ihre CYOA Anwendung soll Spielstände laden/speichern können und einen Editiermodus haben, der die gleiche Szenen-Darstellungskomponente verwendet wie der Spielmodus.
Verwenden Sie nun außerdem Dataclasses für die internen Datenstrukturen
und setzen Sie gezielt Logging ein anstelle von print-Statements..
Beschreiben Sie Ihre Metadaten in einer pyproject.toml.
Sie können diese Aufgabe auch gemeinsam bearbeiten (etwa über ein geteiltes Git Repository; wir könnten auch ein Klassen-Repo aufmachen, um daran einmal best practices zu demonstrieren).