Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Voraussetzung: Generator Expressions und das Iteratorprotokoll, Asyncio, Datenverarbeitung und User Interfaces.

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 – Ereignisstrom mit Generatoren

Viele Anwendungen erzeugen fortlaufend Ereignisse, die von anderen Teilen des Programms verarbeitet werden.

Implementieren Sie einen Generator events(), der fortlaufend Ereignisse erzeugt. Ein Ereignis soll mindestens einen Typ und eine Beschreibung besitzen.

Nutzen Sie den Generator anschließend in Ihrer Wirtschaftssimulation oder CYOA-Anwendung, um Spielereignisse (z. B. Kauf, Verkauf, Begegnung, Entscheidung, Questabschluss, …) zu erzeugen und auszugeben.

Erweitern Sie die Lösung optional um eine Coroutine, die Ereignisse über send(...) empfängt und in einem Log speichert.

Hinweis zu Coroutines

Generatoren können nicht nur Werte mittels yield erzeugen, sondern auch Werte empfangen.

Beispiel:

def logger():
    while True:
        nachricht = yield
        print("LOG:", nachricht)

log = logger()
next(log)                 # Coroutine starten
log.send("Hallo")
log.send("Welt")

Ausgabe:

LOG: Hallo
LOG: Welt

Dabei pausiert die Coroutine bei yield. Mit send(...) wird die Ausführung fortgesetzt und der übergebene Wert wird als Ergebnis des yield-Ausdrucks verwendet.

Aufgabe 2 – API für Spielstände

Erweitern Sie Ihre Wirtschaftssimulation oder Ihre CYOA-Anwendung um eine REST-API mit FastAPI.

Implementieren Sie mindestens die folgenden Endpunkte:

Aufgabe 3 (optional) – NPC- oder Markt-Simulation mit Coroutines

Implementieren Sie mindestens drei Coroutines, die unabhängig voneinander Aktionen ausführen.

Beispiele:

Führen Sie die Coroutines abwechselnd aus und geben Sie die erzeugten Aktionen aus.

Aufgabe 4 (optional) – HTTP-API für Aktionen

Stellen Sie zentrale Aktionen Ihrer Anwendung über eine REST-API bereit.

Beispiele:

Die API soll mindestens einen GET- und einen POST-Endpunkt enthalten.

Testen Sie die API über die automatisch erzeugte Dokumentation unter /docs.