Interactive Fiction in der Schule

Ich glaube, ich habe da etwas entdeckt, das mir viel Spaß machen wird. Über Text Adventures/Interactive Fiction habe ich ja vor ein paar Tagen geschrieben. Im Englischunterricht habe ich auch schon gelegentlich eine Zork-Stunde eingeschoben, und mit einer Unterstufenklasse, die ich in Informatik und Englisch hatte, habe ich selber mit dem Schreiben experimentiert.

Aber da geht noch mehr.

Einmal für den Literatur- und Fremdsprachenunterricht. Es gibt tolle Spiele: Manchmal muss man viele Rätsel lösen; bei anderen Spielen geht es darum, das historische New York kennenzulernen. Man schlüpft in die Rollen von Papageien oder Kleinkindern im Krabbelalter, mit entsprechend eingeschränkten Möglichkeiten, die Umwelt zu beeinflussen. Andere Werke sind Kurzgeschichten, paradoxe Parabeln und Verwirrspiele, avantgardistische Textexperimente. Auf Deutsch ist die Auswahl an Texten geringer, aber prinzipiell ist das gleiche möglich.

(Bald merkt man: Die Spiele leben nicht von den Rätseln, sondern von der Atmosphäre. Die wird anders erzeugt als in herkömmlicher Epik, ein paar Sätze reichen meist zur Beschreibung. Die Qualität des Schreibens zeigt sich auch darin, wie sehr die Erwartungen und Vermutungen des Spieler-Lesers vorausgeahnt werden; hier wird gleich unmittelbar auf die Reader-Response reagiert.)

Zum anderen kann man das Schreiben solcher Texte – vielleicht – für den Informatikunterricht nutzen. Geschrieben wird Interactive Fiction meist in eigenen, objektorientierten Programmiersprachen. In Inform 6 legt man ein Objekt so an:

Object Staff_Room "Staff Room"
     with
          description "A room for all the staff to meet and sit 
                and get a cup of coffee.",
          n_to hallway,
     has light;

Das sieht doch schon mal nach einer richtigen Programmiersprache aus. Aber in der Informatik geht es ja gar nicht so ums Programmieren. Es gibt auch Ansätze, informatische Konzepte ohne Programmiersprache zu lehren, zum Beispiel in einer Programmierumgebung, die ganz ohne Code und die entsprechenden Syntaxfehler auskommt, in der die Lernenden nur mit Drag-and-Drop arbeiten.

Eine andere Möglichkeit könnte Inform 7 sein. Da sehen die Zeilen Code, mit denen man den gleichen Raum wie oben erzeugt, so aus:

The Staff Room is a lighted room. "A room for all the staff to meet and sit and get a cup of coffee." North of the Staff Room is the Hallway.

Einfacher Inform-7-Code ist leicht zu schreiben, weil Inform 7 der natürlichen Sprache Englisch so nahe kommt wie wohl keine andere Programmiersprache. Deswegen lässt sich der Code auch sehr leicht lesen. Anspruchsvoller Inform-7-Code ist aus genau diesem Grund wohl schwerer zu schreiben, als man denkt. Zu sehr ist man versucht, einfach normales Englisch zu verwenden und übersieht dabei, dass Inform 7 trotz allem vielen Beschränkungen unterliegt. Aber dafür kann man sehr knapp und elegant formulieren:

Instead of a suspicious person (called the suspect) burning something which is evidence against the suspect when the number of people in the location is at least two, try the suspect going a random valid direction.

(Beispiel aus der pdf-Fassung von Ron Newcombs Inform 7 for Programmers.)

So komplexe Regeln für das Verhalten der Spielwelt wird man in der Schule kaum brauchen. Aber Zustandsautomaten gehen ganz schön, und die macht man zum Beispiel in der 10. Klasse. Da programmiert man zum Beispiel einen Aufzug mit drei Stockwerken/Zuständen. In Inform 7 legt man zuerst den Aufzug und die Knöpfe an, damit man in der Spielwelt auch etwas tun kann:

The elevator is an enterable, transparent container in the basement. It is not portable. The description is "An elevator with an up and a down button."
The up button is a thing in the elevator. It is scenery. The description is "An arrow pointing upwards."
The down button is a thing in the elevator. It is scenery. The description is "An arrow pointing downwards."
The elevator has a number called zustand. The zustand of the elevator is 1.

Und dann kommen die Regeln für die Zustandsübergänge:

Instead of pushing the up button when the player is in the elevator:
   if the zustand of the elevator is 0:
     now the zustand of the elevator is 1;
     say "Going up. (Ground floor.)";
     now the elevator is in the ground floor;
   otherwise if the zustand of the elevator is 1:
     now the zustand of the elevator is 2;
     say "Going up. (First floor.)";
     now the elevator is in the first floor;
   otherwise:
     say "Nothing happens."

Instead of pushing the down button when the player is in the elevator:
   if the zustand of the elevator is 2:
     now the zustand of the elevator is 1;
     say "Going down. (Ground floor.)";
     now the elevator is in the ground floor;
   otherwise if the zustand of the elevator is 1:
     now the zustand of the elevator is 0;
     say "Going down. (Basement.)";
     now the elevator is in the basement;
   otherwise:
     say "Nothing happens."

Eigentlich müssten die Knöpfe nicht nur im Aufzug sein, sondern auch außen. Aber das ist ja erst mal nur ein einfaches Modell.

Was auch noch gut geht mit Inform: Objekte, Attribute, Klassen, Vererbung, Datentypen; Modellierung, Relationen. Was vermutlich nicht so gut geht: Algorithmik, aber da bin ich noch am Herumprobieren.

Ich habe mal ein paar Seiten erstellt, die ich als Ausgangspunkt für meine Untersuchung von Inform 7 für die Schule nehmen möchte. Dort auch Links zu allem möglichen.

Bislang habe ich mit einer 10. Klasse zwischendurch mal Spiele in Inform 7 geschrieben; bisher ist nur ein kurzes Spiel online, von mir redigiert; ich hoffe, dass die anderen vor dem Schuljahresende auch fertig werden (von den Schülern selber noch redigiert).

7 Gedanken zu “Interactive Fiction in der Schule

  1. Robert on 2.5.2012 at 10:03 sagte:

    Hatte erwartet, dass sich das siebte Geißlein in einer Standuhr versteckt… ;)

  2. Ja, am Ende müsste man noch feilen. Ginge auch schnell: eine Uhr reinstellen, die zu einem Scenery-Container gemacht wird. “The seventh kid is in the clock.” Dann muss der Spieler von selber auf die Idee kommen, die Uhr zu untersuchen und festzustellen, dass man sie öffnen kann.

  3. Pingback: Interactive Fiction lehren - interactive fiction blog

  4. Tolle Sache – für deine Fächerkombination ist das ja wirklich genial!

    Interessant an Inform 7 finde ich, dass die vom Adventure und den Spielern produzierten Daten, d.h. die Textein- und -ausgaben, quasi in der Programmiersprache selbst, einem vereinfachten Englisch (s. auch http://en.wikipedia.org/wiki/Simplified_English), vorliegen. Code und Daten haben also das selbe Format (zumindest ein sehr ähnliches). Homoikonizität nennt man das, und wenn eine Programmiersprache homoikonisch ist (typisches Beispiel: Lisp) kann man viele Dinge, die anderswo sehr kompliziert sind (Metaprogrammierung, Code-Generierung durch ein Programm) sehr einfach haben. Bei Inform 7 würde ich z.B. vermuten, dass der Parser für Spielereingaben der gleiche ist wie der, der den Programmcode einliest.

    Na, auf jeden Fall sehr spannend. Ich freue mich schon auf weitere Berichte!

  5. Vielen Dank für die interessanten Links und die Erwähnung auf der Linkseite, die du zu dem Thema angelegt hast. Besonders gut hat mir die Kurzreferenz zu Inform 7 gefallen.

  6. Bei der letzten Spielerunde in München haben wir übrigens auch O gespielt (ganz ohne mein Zutun, erst mal). Kam auch gut an. Ich hatte es ja vorher schon gespielt und mich zurückgehalten.

    Ansonsten hat mich heute Kopfweh und Müdigkeit zurückgeworfen, ansonsten bin ich gerade dabei, traditionellere Aufgaben in Inform zu lösen (Potenzfunktion, Fakultät), einen Robot Karol habe ich begonnen, und Ideen für Spiele habe ich auch.

  7. Es freut mich zu hören, dass O gut angekommen ist. :)

    Ich wünsche dir gute Besserung – mit Kopfweh sollte man nicht vor dem Bildschirm sitzen. :)

    Ich bin gespannt auf die neuen Spiele.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Manchmal sollte man anderen das letzte Wort lassen, selbst wenn sie eine andere Meinung haben als man selber.

Post Navigation