Kontakt
stefan.bente[at]th-koeln.de
+49 2261 8196 6367
Discord Server
Prof. Bente Personal Zoom
Adresse
Steinmüllerallee 4
51643 Gummersbach
Gebäude LC4
Raum 1708 (Wegbeschreibung)
Sprechstunde nach Vereinbarung
Terminanfrage: calendly.com Wenn Sie dieses Tool nicht nutzen wollen, schicken Sie eine Mail und ich weise Ihnen einen Termin zu.

Übung »Wir designen ein Text-Adventure«

In dieser Übung designen wir ein kleines Stück Software - ein Text-Adventure. In dieser Übung besprechen wir, welche Schritte dafür sinnvoll sind und wie man sich so einer Aufgabe nähern kann.

Dauer
Ca. 180 min
Video(s) hierzu

Worum geht es?

Ein Text-Adventure ist ein Spiel, die auf die Konsolen-Zeit (vor den grafischen Benutzungsoberflächen) zurückgeht. In den 1980er und 90er Jahren war es ein sehr beliebtes Genre, und einige klassische Spiele aus dieser Zeit können immer noch mit browserbasierten Emulatoren gespielt werden.

Die Idee ist einfach: Die einzige Schnittstelle zum Spiel ist mein Konsolen-Window. Man findet sich an einem unbekannten Ort wieder, muss ihn erkunden, verschiedene Bedrohungen überleben und eine Aufgabe lösen. Normalerweise bewege ich mich in einem Raster: Ich kann nur nach Norden, Osten, Westen und Süden gehen. Während meiner Suche muss ich Gegenstände aufsammeln und sie benutzen, um Türen zu öffnen oder Bedrohungen zu bekämpfen.

Nähere Informationen finden Sie in dem individuellen Repo für das Text-Adventure (im README). Aber wie nähert man sich denn jetzt am besten so einer Aufgabe? In dieser Übung machen wir die ersten Schritte gemeinsam.

Das Vorgehen beim objekt-orientierten Programmieren

  1. Fachlichkeit verstehen
  2. Geschäftsobjekte identifizieren
    • Eigenschaften
    • Abläufe
  3. Klassen anlegen und mit Leben füllen
  4. Parallel: Unit Tests anlegen

Schritt 1: Fachlichkeit verstehen

Nehmen Sie sich eine Stunde Zeit und gehen Sie in kleinen Gruppen in “virtuelle Besprechungsräume”. Überlegen Sie gemeinsam, was gute Ideen für ein Text-Adventure sein könnten. Sie können eine Idee gemeinsam entwickeln, oder jede/r von Ihnen verfolgt eine eigene Idee (oder Variante).

Wichtig ist (jetzt und bei allen folgenden Schritten), dass Sie in jedem Fall selbst und allein an Ihrem Code arbeiten. Wenn Sie nur zusehen, lernen Sie nur wenig Neues. Aber tauschen Sie sich jederzeit gern mit Anderen aus und sprechen Sie über Ideen und Probleme!

Sie können Ihre Ideen auf einem Miro-Board sammeln.

Schritt 2: Geschäftsobjekte identifizieren

Denken Sie zurück an unsere Warmup-Übung zum Thema “Eine Pizza Funghi zubereiten”. Dort haben wir in zwei Teilteams Abläufe beim Pizzamachen und Eigenschaften (Bestandteile, nötige Gerätschaften etc.) gesammelt und dann zusammengeführt.

Machen Sie das dieses Mal auch wieder so - nur eben für Ihre Idee beim Text-Adventure. Sie können wieder das Miro-Board dafür nutzen.

Nehmen Sie sich ca. 45 min Zeit dafür, dann vergleich wir.

Schritt 2a: Ablaufdiagramm

Versuchen Sie mal, ein Ablaufdiagramm zu erstellen (keine formale Notation, einfach Kästchen und Pfeile). Welche Schritte muss das Programm durchlaufen? Z.B.

  • Kommando einlesen
  • Wenn Bewegungs-Kommando: setze Spieler in den genannten Raum

Schritt 2b: Domain Model

Welche Entitäten (Geschäftsobjekte) gibt es bei Ihnen? Spieler? Waffen? Monster? Machen Sie ein Domain Model, bei dem Sie die Entitäten als Kästen und Pfeilen darstellen. Pfeil zwischen A und B heißt: A kennt/benutzt B.

Nehmen Sie sich ca. 45 min Zeit für Schritt 2a und 2b, dann kommen wir zusammen und vergleichen.

Schritt 3: Klassen anlegen und mit Leben füllen

Die Kästchen aus Ihrem Domain Model sind gute Kandidaten für Klassen. Entscheidungen und Aktivitäten aus Ihrem Ablaufdiagramm können Methoden sein. Legen Sie schon einmal leere C#-Klassen in Ihrem Repo an, und schreiben Sie leere Methoden, wo Ihnen diese schon einleuchten.

Schritt 4: Unit Tests anlegen

Versuchen Sie, für eine Ihrer Klassen Testfälle zu identifizieren - wenn nötig erst einmal nur als Kommentare.

Nehmen Sie sich für Schritt 3 und 4 ca. 30 min Zeit.