Benutzer-Werkzeuge

Webseiten-Werkzeuge


schule:textadventure

Textadventure

Textadventures sind Computerspiele der „ersten Generation“, also Spiele, bei denen der Spieler nur über Texteingaben mit dem Computer kommunizieren kann. Seine Figur steuert er über Befehle wie „go“, „east“, „west“, „pick up“, „turn“, etc. Die ersten Textadventures waren Don Woods’ Collossal Cave Adventure (1976) und das von MIT-Studenten programmierte Zork (1977). Wir wollen ein solches Textadventure als objektorientiertes Programm erstellen.

Es gibt auch einen Ordner mit Materialien für das Projekt.

Raumplan

Spiele dazu zunächst das Textadventure Schule und erstelle einen Raumplan.

UML Objektdiagramm

UML-Objektdiagramme stellen Objekte und ihren Zustand zu einem bestimmten Zeitpunkt zur Ausführung des Programmes dar. Wir können an einem Beispiel mit Zügen erkennen, welche Objekte, Attribute und Methoden sich erkennen lassen.

  1. Informiere dich über den Aufbau und Zweck eines solchen Diagramms.
  2. Erstelle eines mit den Objekten unseres Textadventures.

Klassen

Verschiedene Objekte, wie etwa der Flur oder das Lehrerzimmer, haben Eigenschaften gemeinsam. Die Gemeinsamkeiten werden in Klassen zusammengefasst. Die lassen sich grafisch in einem Klassendiagramm darstellen. Zusätzlich werden Methoden aufgeführt, die auf Objekten (Instanzen) der Klassen aufgerufen werden können.

Kapitel 8: Objektorientierte Programmierung in dem Buch Raspberry Pi programmieren mit Python beschreibt, wie die Objekt-Orientierte Programmierung in Python realisiert wurde.

Aufgaben

  1. Wie sind Klassen in einem Klassendiagramm aufgebaut?
  2. Welchem Zweck dienen Klassen?
  3. Erstelle ein Klassendiagramm für die Klassen Raum und Spieler und veröffentliche das Ergebnis.
  4. Was ist der Unterschied zwischen einem Objekt und einer Klasse?
  5. Wie ist der Unterschied im Objektdiagramm und Klassendiagramm erkennbar?
  6. Implementiere die Klasse Raum und veröffentliche das Ergebnis.

Verwendung der Klassen

  1. Benutze nun die erstellten Klassen „Raum“ und „Spieler“ und erstelle die Objekte aus dem Spiel. Schreibe auch die Methode für das Event des Buttons.
  2. Veröffentliche dein Ergebnis.
  3. Ergänze das Spiel um drei weitere Räume. Dir fallen bestimmt auch andere Ergänzungen ein, um das Spiel interessanter zu gestalten.

Übungen zu Klassen

  1. Markiere im Quelltext der Klasse Raum alle Bezeichner von Klassen1) rot, von Methoden grün, von Objekten gelb und von Attributen blau. Müssen manche Bezeichner in mehreren Farben markiert werden?
  2. Bearbeite die Übungen auf dem Arbeitsblatt.

Sequenzdiagramme

Sequenzdiagramme können einen konkreten Ablauf in einem Programm darstellen. Zu Beginn unseres Programmes wird die Welt erstellt. Dabei sind verschiedene Klassen beteiligt. Diese Erschaffung der Spielwelt sollen nun genauer untersucht werden.

  1. Informiere dich über Sequenzdiagramme.
  2. Was stellen Sequenzdiagramme dar?
  3. Welchen Zweck haben Sequenzdiagramme?
  4. Erstelle ein Sequenzdiagramm für die Erschaffung der Spielwelt und veröffentliche es.

Übung Diagrammelemente

Benenne die mit Pfeilen und roten Ziffern bezeichneten Elemente des folgenden Sequenzdiagramms.

Übung Personen und Gruppe

Person peter = new Person("peter","1");
Person petra = new Person("petra","2");
Gruppe gruppe =new Gruppe();
gruppe.addPerson(peter);
gruppe.addPerson(petra);
gruppe.removePerson(peter);
  1. Die Klasse Gruppe verwaltet die Personen intern in einer Liste (Klasse List).
  2. Beim Instanziieren einer Gruppe, wird die Liste erzeugt.
  3. Das Hinzufügen und Entfernen von Personen zu einer Gruppe wird an die Liste delegiert.
  4. Erstelle für den obigen Quelltext ein Sequenzdiagramm.

Aktivitätsdiagramme

Mit UML-Aktivitätsdiagrammen kann der Ablauf einer Methode grafisch beschrieben werden.

  1. Informiere dich über Aktivitätsdiagramme.
  2. Wie sind diese Diagramme aufgebaut?
  3. Worin unterscheiden sie sich von Sequenzdiagrammen?
  4. Was sind die Gemeinsamkeiten mit Sequenzdiagrammen?
  5. Erstelle ein Aktivitätsdiagramm für den OK-Button und veröffentliche deine Ergebnisse.
  6. Bearbeite die Aufgabe Fluggast

Spielwelt aus Datei laden

Die Spielwelt ist derzeit fest in den Quelltext programmiert und lässt sich nicht während der Laufzeit des Programms ändern. Wir wollen das Spiel nun erweitern. Die Spielwelt soll über einen Menüpunkt zur Laufzeit geladen werden.

  1. Erstelle eine Menüleiste mit Hilfe eines MenuStrip.
  2. Füge den Menüpunkt Datei → Spielwelt laden hinzu.
  3. Überlege, wie eine Textdatei aufgebaut sein könnte, aus der eine Spielwelt geladen werden kann. Veröffentliche dein Ergebnis.
  4. Erstelle die Textdatei für die derzeitigen Räume gemäß des gewählten Formates.
  5. Programmiere die Methoden zum Laden der Welt aus der Datei und veröffentliche deine Ergebnisse.

Tipp: Wenn dir kein Format für die Textdatei einfällt, kannst du das Format in der Fußnote verwenden.2)


Lösungen

1) In C# sind Datentypen immer objektbasiert. So sind z.B. int oder string Aliase für die entsprechenden Klassen aus System. Mehr Infos in Sprachelemente_von_C-Sharp#Datentypen_und_Speicherbedarf
2) Die Textdatei beschreibt die Spielwelt des Textadventures. Zunächst werden alle Räume mit einem Namen und einer Beschreibung aufgelistet – getrennt durch ein Semikolon. Es folgen die Verbindungen zwischen den Räumen. Zuerst wir der Raum genannt, der verbunden werden soll. Dahinter folgen die angrenzenden Räume in nördlicher, östlicher, südlicher und westlicher Richtung – jeweils getrennt durch ein Semikolon.
Flur;Du stehst in einem leeren Flur.
Lehrerzimmer;Du betrittst das Lehrerzimmer. Dieses ist unheimlich und groß. In der Ecke steht eine Kaffeemaschine.
Abstellkammer;Du öffnest eine Abstellkammer. Die Kammer ist leer und dunkel.
Computerraum;Du gehst in den Computerraum. Alle Rechner laufen, der Raum ist leer.

Flur;Lehrerzimmer;Abstellkammer;Computerraum;
Lehrerzimmer;;;Flur;
Abstellkammer;;;;Flur
Computerraum;Flur;;;
3) Ein Lightning Talk des 31C3.
schule/textadventure.txt · Zuletzt geändert: 19.04.2017 08:39 (Externe Bearbeitung)