Benutzer:Andyk/Mitschriften/PSI 06 12 08 Inform7 Einführung: Unterschied zwischen den Versionen
Aus Philo Wiki
Andyk (Diskussion | Beiträge) (→Beziehungen) |
Andyk (Diskussion | Beiträge) (add Aktionen, Klassen, Attribute,...) |
||
Zeile 49: | Zeile 49: | ||
:::<code>The Pandora Box is a closed container on the table. The box is transparent. The Box contains the Inform7 Documentation. The description of the Documentation is "The so called Inform7 Documentation. That is such stuff as my dreams are made on. ^^".<br>The description of the Pandora Box is "I have never seen a transparent Pandora Box. There is a small book in it named 'Inform7 Documentation'."</code> | :::<code>The Pandora Box is a closed container on the table. The box is transparent. The Box contains the Inform7 Documentation. The description of the Documentation is "The so called Inform7 Documentation. That is such stuff as my dreams are made on. ^^".<br>The description of the Pandora Box is "I have never seen a transparent Pandora Box. There is a small book in it named 'Inform7 Documentation'."</code> | ||
− | ==== | + | ==== Klassen (Kinds) ==== |
− | : | + | :;zu Klassen (synonym: Arten/Sorten oder in Inform7: Kinds) allgemein: |
+ | ::* Jedes Objekt ist von einer Klasse abgeleitet. | ||
+ | ::* Klassen können selbst von einer anderen Klasse abgeleitet sein (Ober- und Unterklasse) | ||
+ | ::* Die Basisklassen einer Inform7-Welt sind: | ||
+ | ::** Thing | ||
+ | ::** Room | ||
+ | ::** Direction | ||
+ | ::* Neue Klassen können aus bestehenden abgeleitet werden | ||
+ | |||
+ | :;neue Klassen definieren: | ||
+ | :: <code>Humanized PC <b>is a kind of</b> person. Humanized PC is usually fixed in place. A power button is part of every Humanized PC. The plural of Humanized PC is Humanized PCs.</code> | ||
+ | |||
+ | :;Objekt aus der Klasse ableiten: | ||
+ | :: <code>Sim0n3 is a Humanized PC in your house.</code> | ||
+ | |||
+ | ==== Attribute(Kinds of Values) ==== | ||
+ | :;zu Attribute allgemein: | ||
+ | ::* Attribute sind Eigenschaften von Objekten oder Klassen, die bestimmte Werte (Values) annehmen können | ||
+ | ::* Beispiel: Eine Person hat einen Namen, der aus Buchstaben besteht und ein Alter, das aus einer Zahl zwischen 1 und 200 besteht. Sie hat außerdem ein Geschlecht, dass die Werte 'weiblich' oder 'männlich' annehmen kann. | ||
+ | |||
+ | :;Attribut definieren: | ||
+ | ::<code>Userstate is a <b>kind of value</b>. The Userstates are logged in and logged out.</code> | ||
+ | |||
+ | :;Attribut und Attributwert einem Objekt hinzufügen: | ||
+ | ::<code>Sim0n3 has a Userstate called status. The status of Sim0n3 is logged out.</code> | ||
+ | |||
+ | :;Wert des Attributs in eine Beschreibung integrieren: | ||
+ | ::<code>Sim0n3 is a Humanized PC in your house with description "My lovely Sim0n3... When I come home after a hard day she is always there for me. Because of the emergency power supply I bought last year she is online 24 hours a day and 7 days a week. Although she has only 950MHz, I like her. The status of Sim0n3 is: <b>[status]</b>.</code> | ||
− | + | :;Wert des Attributs im Zuge einer Aktion verändern: | |
− | : | + | ::<code>Instead of cracking Sim0n3 when the player administers Sim0n3:</code> |
+ | :::<code>say "In this special case I know the password and do not have to Brute-force. I am logging in now...";<br>award 200 points;<br>now the status of Sim0n3 is logged in.</code> | ||
==== Relationen, Beziehungen ==== | ==== Relationen, Beziehungen ==== | ||
Zeile 72: | Zeile 100: | ||
::* ... | ::* ... | ||
− | :;Neue Relationen | + | :;Neue Relationen definieren: |
::* Allgemein: ''<Relationsname>'' relates (various|one) ''<ObjektmengeA>'' to (various|one) ''<ObjektmengeB>''. | ::* Allgemein: ''<Relationsname>'' relates (various|one) ''<ObjektmengeA>'' to (various|one) ''<ObjektmengeB>''. | ||
:: <code>Administer relates one person (called the Administrator) to various Humanized PCs.<br><br>The verb to administer (he administers, they administer, he administered, it is administered, he is administering) implies the administer relation.<br><br>The player administers Sim0n3.<br><br>Instead of cracking Sim0n3 when the player administers Sim0n3:</code> | :: <code>Administer relates one person (called the Administrator) to various Humanized PCs.<br><br>The verb to administer (he administers, they administer, he administered, it is administered, he is administering) implies the administer relation.<br><br>The player administers Sim0n3.<br><br>Instead of cracking Sim0n3 when the player administers Sim0n3:</code> | ||
::: <code>say "In this special case I know the password and do not have to Brute-force. I am logging in now...";<br>award 200 points;<br>now the status of Sim0n3 is logged in.</code> | ::: <code>say "In this special case I know the password and do not have to Brute-force. I am logging in now...";<br>award 200 points;<br>now the status of Sim0n3 is logged in.</code> | ||
− | ==== | + | ==== Aktionen ==== |
+ | :;Zu Akktionen allgemein: | ||
+ | ::* Eine Aktion ist ein Impuls, etwas zu tun | ||
+ | ::* Eine Aktion kann erfolgreich sein oder nicht, und zwar in Bezug auf die Intention des Spielers, der die Aktion durch einen Befehl auslöst. | ||
+ | |||
+ | :;Standard-Aktionen in Inform7: | ||
+ | ::* examining | ||
+ | ::* taking | ||
+ | ::* switching off | ||
+ | ::* opening/closing | ||
+ | ::* ... (vgl. Index / Actions) | ||
+ | |||
+ | :;Verhalten von Standard-Aktionen verändern durch Regeln: | ||
+ | ::* <code><b>Instead</b> of taking your bed, say "I don't want to pump iron."</code> | ||
+ | ::* <code><b>Before</b> taking off the black pullover, say "I hope you are above 18."</code> | ||
+ | ::* <code><b>After</b> taking the Entscheidungsproblem: award 200 points; say "Wow, this is a heavy burden, i have to carry now.".</code> | ||
+ | ::* <code>Instead of switching off a power button which is a part of a humanized pc (called the machine):<b>try</b> switching off the machine.</code> | ||
+ | |||
+ | :;neue Aktionen definieren: | ||
+ | ::<code>Cracking is an action applying to visible things.<br><br>Understand "crack [something]" as cracking.<br><br>Check cracking:</code> | ||
+ | :::<code>if the noun is not a Humanized PC, say "This is not within the scope of Hacker ethics.".</code> | ||
+ | |||
+ | ::<code>Instead of cracking Sim0n3 when the player administers Sim0n3:</code> | ||
+ | :::<code>say "In this special case I know the password and do not have to Brute-force. I am logging in now...";<br>award 200 points;<br><b>now</b> the status of Sim0n3 is logged in.</code> | ||
+ | |||
+ | ==== Alternativen und Zufälligkeiten ==== | ||
:todo | :todo | ||
==== Szenarios ==== | ==== Szenarios ==== | ||
+ | :todo | ||
+ | |||
+ | ==== Extentions / Konversationen ==== | ||
:todo | :todo | ||
Version vom 3. Dezember 2008, 22:30 Uhr
Inhaltsverzeichnis
Inform 7 - Eine kleine Einführung
Ein Versuch, sich an Inform7 heranzuwagen
- The player is a character in a drama, rather than a disembodied observer like the movie camera: he or she is somebody trying to get something done (even if that something is only understanding the situation). (Inform7-Homepage)
Motivation: Text und Weltbeschreibung
- Inform7 interpretiert die englische Sprache und erzeugt daraus eine virtuelle Welt. Jeder Satz ist ein Teil des Weltenbauplans. Man modelliert also Entitäten (Dinge, Personen, ...) und weist ihnen Eigenschaften und Beschreibungen zu. Außerdem sind Beziehungen zwischen Entitäten von großer Bedeutung.
- Man muss aber lernen, auf welche Weise man die englische Sprache benutzen soll. Der Inform7-Interpreter kann keine Gedanken lesen. Er kann auch keine Welt erzeugen, wenn der Weltbauplan inkonsistent/widersprüchlich ist.
- Der Spieler soll die Welt erkunden und verändern können. Inform7 erlaubt das Vorsehen alternativer Handlungsstränge. Der Spieler muss davon nichts merken (zumindest nicht beim ersten Spieldurchgang).
Wie man spricht
Grundlagen des Objektorientierten Weltenbaus
Um mit Inform7 eine Welt zu erzeugen, braucht man zumindest folgende zwei Sprachmodi:
Assertions / Fakten
- Fakten beschreiben die Ausgangskonfiguration der Welt, die der Spieler vorfindet. Die Welt besteht aus Objekten und Beziehungen zwischen Objekten. Objekte haben Eigenschaften und Fähigkeiten. (Das sind die Grundlegenden Dinge des Objektorientierten Paradigmas der Programmiersprachen).
The apple is a thing. The description of the apple is "Looks delicious." HS3D is a room. "I know this room. Usually, there are a lot of people here. On Saturday, it is empty." A table is here. The apple is on the table. The description of the table is "It is made of wood."
Regeln
- Regeln beschreiben, wie sich die Welt unter bestimmten Umständen verhalten soll? Zum Beispiel, wenn der Spieler mit der Welt interagiert.
- Es gibt Regeln, die standardmäßig inkludiert und für gewöhnlich nützlich sind. (siehe Inform7-Entwicklungsumgebung / Index / Rules ) Sie können aber auch verändert werden.
when play begins, say "Ich begrüße Sie.".
- Eine Wichtige Form der Regel (die man mit WENN-DANN vergleichen kann) ist die INSTEAD-OF-Regel. Diese Regel ist von der Form: Instead of <ein bestimmter Umstand>: verändere dies; verändere das.
Instead of taking the apple:
say "I better not touch this. It may be a trap.";
say "Or should I...?";
remove the apple from play;
say "What the hell? The apple disappeared."
Grammatik des Weltenbaus
Unterschiedliche Sätze können dieselbe Welt hervorbringen. Die Grundkonzepte sind aber ähnlich und können bei den verschiedensten Sätzen verwendet werden.
Räume und Dinge
The NIG is a region.
HS3D is a room.
HS3D contains a beamer.
- Verbindungen zwischen Räumen
- Direkt ohne Türen:
RoomA is north of RoomB.
- Mit Türen:
The wooden door is north of RoomA and south of RoomB. The wooden door is a door.
- Mit Türen:
- Am Beispiel des dritten Stocks im NIG:
Floor3A, Floor3B, Floor3C and Floor3D are rooms.
Wooden door, DoorCD, DoorBC, DoorAB and DoorAD are open doors.
The description of Floor3D is "A long, long silent floor. I can only hear strange noices from the Heating. This is as weird as in The Shining... Where is Jack Nickolson?"
The description of the wooden Door is "This is the door of Lecture room 3D.".
The wooden Door is north of Floor3D and south of HS3D.
DoorCD is north of Floor3C and west of Floor3D.
DoorBC is south of Floor3C and west of Floor3B.
DoorAB is east of Floor3B and south of Floor3A.
DoorAD is north of Floor3A and east of Floor3D.
- Am Beispiel des dritten Stocks im NIG:
- Container
-
The Pandora Box is a closed container on the table. The box is transparent. The Box contains the Inform7 Documentation. The description of the Documentation is "The so called Inform7 Documentation. That is such stuff as my dreams are made on. ^^".
The description of the Pandora Box is "I have never seen a transparent Pandora Box. There is a small book in it named 'Inform7 Documentation'."
Klassen (Kinds)
- zu Klassen (synonym
- Arten/Sorten oder in Inform7: Kinds) allgemein:
- Jedes Objekt ist von einer Klasse abgeleitet.
- Klassen können selbst von einer anderen Klasse abgeleitet sein (Ober- und Unterklasse)
- Die Basisklassen einer Inform7-Welt sind:
- Thing
- Room
- Direction
- Neue Klassen können aus bestehenden abgeleitet werden
- neue Klassen definieren
Humanized PC is a kind of person. Humanized PC is usually fixed in place. A power button is part of every Humanized PC. The plural of Humanized PC is Humanized PCs.
- Objekt aus der Klasse ableiten
Sim0n3 is a Humanized PC in your house.
Attribute(Kinds of Values)
- zu Attribute allgemein
-
- Attribute sind Eigenschaften von Objekten oder Klassen, die bestimmte Werte (Values) annehmen können
- Beispiel: Eine Person hat einen Namen, der aus Buchstaben besteht und ein Alter, das aus einer Zahl zwischen 1 und 200 besteht. Sie hat außerdem ein Geschlecht, dass die Werte 'weiblich' oder 'männlich' annehmen kann.
- Attribut definieren
Userstate is a kind of value. The Userstates are logged in and logged out.
- Attribut und Attributwert einem Objekt hinzufügen
Sim0n3 has a Userstate called status. The status of Sim0n3 is logged out.
- Wert des Attributs in eine Beschreibung integrieren
Sim0n3 is a Humanized PC in your house with description "My lovely Sim0n3... When I come home after a hard day she is always there for me. Because of the emergency power supply I bought last year she is online 24 hours a day and 7 days a week. Although she has only 950MHz, I like her. The status of Sim0n3 is: [status].
- Wert des Attributs im Zuge einer Aktion verändern
Instead of cracking Sim0n3 when the player administers Sim0n3:
say "In this special case I know the password and do not have to Brute-force. I am logging in now...";
award 200 points;
now the status of Sim0n3 is logged in.
Relationen, Beziehungen
- Zu Relationen allgemein
- Relationen werden (in Inform7) durch Verben realisiert und beschreiben den Zusammenhang zwischen mehreren Objekten.
- Relationen sind Phrasen, die man in Bezug auf die Objekte mit ja oder nein beantworten kann.
- Thomas ist kleiner als Maria und Markus. Es handelt sich um eine 'kleiner als'-Relation.
- Manche Relationen schließen sich aufgrund logischer oder physikalischer Zusammehänge gegenseitig aus
- 'Das Buch liegt auf dem Tisch' und 'Das Buch ist Teil des Tisches' können nicht gleichzeitig zutreffen.
- Standard-Relationen in Inform7
The Inform7 Documentation is in the Pandora Box.
The apple is on the table.
The black pullover is worn by the player.
The wooden Door is north of Floor3D and south of HS3D.
A power button is part of every Humanized PC.
- ...
- Neue Relationen definieren
-
- Allgemein: <Relationsname> relates (various|one) <ObjektmengeA> to (various|one) <ObjektmengeB>.
Administer relates one person (called the Administrator) to various Humanized PCs.
The verb to administer (he administers, they administer, he administered, it is administered, he is administering) implies the administer relation.
The player administers Sim0n3.
Instead of cracking Sim0n3 when the player administers Sim0n3:say "In this special case I know the password and do not have to Brute-force. I am logging in now...";
award 200 points;
now the status of Sim0n3 is logged in.
Aktionen
- Zu Akktionen allgemein
-
- Eine Aktion ist ein Impuls, etwas zu tun
- Eine Aktion kann erfolgreich sein oder nicht, und zwar in Bezug auf die Intention des Spielers, der die Aktion durch einen Befehl auslöst.
- Standard-Aktionen in Inform7
-
- examining
- taking
- switching off
- opening/closing
- ... (vgl. Index / Actions)
- Verhalten von Standard-Aktionen verändern durch Regeln
-
Instead of taking your bed, say "I don't want to pump iron."
Before taking off the black pullover, say "I hope you are above 18."
After taking the Entscheidungsproblem: award 200 points; say "Wow, this is a heavy burden, i have to carry now.".
Instead of switching off a power button which is a part of a humanized pc (called the machine):try switching off the machine.
- neue Aktionen definieren
Cracking is an action applying to visible things.
Understand "crack [something]" as cracking.
Check cracking:if the noun is not a Humanized PC, say "This is not within the scope of Hacker ethics.".
Instead of cracking Sim0n3 when the player administers Sim0n3:
say "In this special case I know the password and do not have to Brute-force. I am logging in now...";
award 200 points;
now the status of Sim0n3 is logged in.
Alternativen und Zufälligkeiten
- todo
Szenarios
- todo
Extentions / Konversationen
- todo
Randbedingungen: Installation, Test und Veröffentlichung
Installation
todo
Testen und Debuggen
- Details zum Gegenstand apple:
SHOWME apple
- Liste von Gegenständen im Raum:
SHOWME
- Sequenz von Testbefehlen:
test apple with "wear apple / examine apple / push apple / listen apple"
- Im (unveröffentlichten) Spiel
test apple
eintippen
- Im (unveröffentlichten) Spiel
- Liste von verfügbaren Tests:
test
MUD-Clients
todo
Release: Guncho
Kooperation: Subversion
todo - Wie läuft das eigentlich mit dem institutseigenem SVN bzgl. Upload-Berechtigung?