Neue Aktionen muss man selten erzeugen, für viele Wünsche reichen die etwa 80 eingebauten Aktionen in Inform aus. Am häufigsten braucht man neue Aktionen, wenn man neue Gegenstand-Klassen einführt. Nehmen wir an, wir wollen Würfel in unserer Spielwelt haben – dazu brauchen wir eine neue Klasse. Außerdem, aber das ist reiner Luxus, soll der Spieler “dice” eintippen können, wenn er gleich mehrere Würfel auf einmal meint.
Jeder Würfel soll eine Zahl von Seiten haben (standardmäßig 6) und eine Zahl, die oben liegt (standardmäßig 1).
A die is a kind of thing. It has a number called side number. The side number is usually 6. It has a number called face. The face is usually 1. Understand "dice" as the plural of die.
Jetzt zu dem, was man mit dem Würfel machen können soll: vorest soll man ihn nur würfeln können, danach liegt der Würfel am Boden und eine zufällige Zahl liegt oben.
Als Erstes legen wir die Aktion an und legen ihre Valenz – das ist die Anzahl der grammatischen Objekte – und ein paar grundlegende Bedingungen fest:
Rolling is an action applying to one carried thing and requiring light.
“Carried” ist optional, macht hier aber Sinn: man kann nur etwas würfeln, was man bereits hat. Alternativ könnte man auch schreiben “visible”, wenn es um etwas geht, das man lediglich sehen muss, ein Fisch im geschlossenen Aquarium etwa, oder “touchable”, wenn es um etwas geht, das man sehen und berühren kann, aber nicht bereits notwendigerweise mit sich führt. Die Ergänzung “and requiring light” gibt an, dass die Aktion in einem dunklen Raum ohne Lichtquelle nicht möglich ist – das spielte früher für Spiele eine größere Rolle als heute.
Statt “one thing” könnte auch “nothing” oder “two things” stehen (ein direktes und ein indirektes Objekt), mehr sind aber nicht so einfach möglich.
Zweitens brauchen wir mindestens ein Verb, dass der Parser als der Aktion zugehörig erkennen soll:
Understand "roll [something]" as rolling. Understand "shake [something]" as rolling.
Das [something] sagt dem Parser, dass alles nach dem Verb das gemeinte Objekt sein muss.
Drittens brauchen wir in den meisten Fällen auch Check-, Carry-out- und Report-Regeln. Eine Check-Regel soll sicherstellen, dass man nur Würfel würfeln kann und nichts anderes; eine Carry-out-Regel bestimmt, was sich an der Welt ändert (der Würfel liegt danach auf dem Boden und eine neue Zahl liegt oben); eine Report-Regel sagt dem Spieler, was passiert ist:
Check rolling: If the noun is not a die, say "You can do that with dice only." instead. Carry out rolling: Now the face of the noun is a random number from 1 to the side number of the noun; now the noun is in the location of the player. Report rolling: Say "You roll [the noun]. When it comes to rest on the ground, it shows a [face]."
Bei der Check-Regel muss man das instead
beachten; es führt dazu, dass die Bearbeitung abgebrochen wird und die folgenden Regeln nicht mehr angewendet werden. Insbesondere werden so die Carry-out-Regeln daran gehindert, irgendetwas an der Welt zu ändern.
Der Text in Anführungszeichen nach dem “say” ist jeweils Text, der an den Spieler ausgegeben wird. Eckige Klammern innerhalb von Anführungszeichen bedeuten immer, dass der String hier verlassen wird und stattdessen eine Kontrollstruktur oder ein Variablenbezeichner gemeint ist. Man könnte auch umständlicher schreiben:
Say "You roll [the noun]. When it comes to rest on the ground, it shows a "; say face; say "."
Dabei ist the noun
immer eine lokale Variable für das direkte Objekt der aktuellen Aktion (also den Würfel), face
in unserem Fall ein Attribut des Objekts; wir hätten auch korrekter und umständlicher Schreiben können face of the noun
.
Das gesamte Programm auf einmal (kopieren, kompilieren und “test me” eintippen):
"Dice 1" by Herr Rau Chapter 1 - New Kinds A die is a kind of thing. It has a number called side number. The side number is usually 6. It has a number called face. The face is usually 1. Understand "dice" as the plural of die. Chapter 2 - New Actions Rolling is an action applying to one carried thing and requiring light. Understand "roll [something]" as rolling. Understand "shake [something]" as rolling. Check rolling: If the noun is not a die, say "You can do that with dice only." instead. Carry out rolling: Now the face of the noun is a random number from 1 to the side number of the noun; now the noun is in the location of the player. Report rolling: Say "You roll [the noun]. When it comes to rest on the ground, it shows a [face]." Chapter 3 - The World The Casino is a room. The green die is a die in the Casino. The red die is a die in the Casino. The basket is a container in the Casino. Test me with "Take dice / roll green die / roll red die."