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.

Übung 2

Heinrich-Heine-Universität Düsseldorf

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.

Vielleicht sind das etwas zu viele Aufgaben für eine Woche – dann geht es in der Folgewoche weiter mit der zweiten Seite.

Aufgabe 1

Sie haben auf dem letzten Übungsblatt ein CYOA Text-Adventure mit mindestens 7 Szenen entwickelt.

Trennen Sie nun Programmcode von Inhalten, indem Sie die Szenentexte und den Übergangsgraphen (von Szene A ausgehend mehrere Optionen, wie es weitergeht) in eine globale Variable auslagern und das Programm generisch strukturieren (unabhängig von den konkreten Szenen). Verwenden Sie eine geeignete Datenstruktur (das muss nicht unbedingt objektorientiert sein, vielmehr könnten Sie Aufgabe 2 berücksichtigen)!

Überlegen Sie vor der Implementierung, wie sich probabilistische Elemente (Wahrscheinlichkeitsverteilungen) und Inventar-Elemente (Gegenstände die beeinflussen, welche Optionen verfügbar sind oder welche Texte verwendet werden) implementieren lassen.

Aufgabe 2 (optional)

Vorbereitung auf den Themenblock Arbeit mit Dateien:

Überlegen Sie sich eine möglichst einfach zu implementierende Weise, die Spieldaten abzuspeichern und aus einer Datei zu laden.

Dabei gibt es zwei Sorten von Spieldaten: die Story/den Graph des Spiels (was sich, wenn es eine Liste von Dictionaries o.ä. ist, mit __repr__ zu Text speichern lässt) sowie den Zustand eines konkreten Spielers (in welcher Szene mit welchem Inventar; auch das könnte mit __repr__ gespeichert werden).

Aufgabe 3

Entwickeln Sie einen Editor für CYOA Text-Adventures auf Basis Ihres bisherigen Programms: im Editiermodus lässt sich in jeder Szene eine Option löschen, ändern oder hinzufügen, ansonsten lässt sich die Spielmechanik/User interface recyceln.

Beim Hinzufügen oder Ändern einer Option soll es möglich sein, vorhandene Szenen zu vernetzen oder eine neue Szene zu erstellen. Außerdem muss es einen Weg geben, Szenen, die noch nicht oder nicht mehr vernetzt sind, zu löschen.

Überlegen Sie sich dazu einen guten Weg, Szenen auszuwählen: ein Kompromiss aus User-facing string und internal unique identifier.

Aufgabe 4 (optional)

Vorbereitung auf den Themenblock Testing:

Entwickeln Sie einen Weg, den Programmcode zu testen, indem für ein Test-Adventure alle möglichen Eingaben durchprobiert werden.

Wie können Sie alle möglichen sinnvollen Eingaben bzw. alle möglichen Spielabläufe aufzählen?

Können Sie auch nicht-sinnvolle Nutzereingaben automatisiert testen?

Wie gehen Sie beim Testen mit Randomisierung um?

Wie gehen Sie beim Testen mit Zykeln im Spielgraph (Szene A führt auf Szene B führt auf Szene C führt auf Szene A) um?

Aufgabe 5

Wie wäre es denkbar, dass mehrere Spieler gleichzeitig in der gleichen “Welt” spielen und ggf. interagieren?

Überlegen Sie sich mindestens zwei verschiedene Ansätze mit ersten Ideen, wie diese implementiert werden könnten. Tauschen Sie sich mit anderen aus und versuchen Sie, zu einer Einigung zu kommen, welcher Ansatz der beste ist (dazu müssen Sie Kriterien entwickeln wie z.B. Aufwand zur Implementierung, Fehleranfälligkeit einer Implementierung o.ä.).

Aufgabe 6 (optional)

Vorbereitung auf den Themenblock Anwendungsentwicklung:

Visualisieren Sie den Spielgraph durch Umwandlung in ein networkx-Objekt und die Darstellungsmöglichkeiten, die das Paket networkx bietet.

Fortgeschritten: Analysieren Sie automatisiert Spieleigenschaften wie “es gibt mindestens einen / mehr als einen Weg vom Start zum Ziel” oder “es gibt mindestens einem Weg, das Spiel zu verlieren” oder “es gibt vom Start aus unerreichbare Szenen”.