Chapter_3: "Defining the Data for our Game World" $
In unserem Spiel gibt es neben den beiden Personen noch vier bewegliche Objekte, mit denen der Spieler irgend etwas machen kann. Die Whiskeyflasche des Zauberers kennen wir schon. Dann werden wir bald noch einem Frosch, einer Kette und einem Eimer begegnen. Diese vier Objekte packen wir in eine Liste und speichern die Liste unter dem Namen objects.
objects: '[whiskey_bottle, bucket, chain, frog]$
Die eckigen Klammern werden in Maxima für Listen verwendet. Eine Liste ist offensichtlich kein Atom, sondern ein aus mehreren Elementen zusammengesetzter Ausdruck. Da Maxima auf Lisp (LISt Processing) aufbaut, ermöglicht die Verwendung von Listen eine sehr flexible und elegante Programmierung. Davon werden wir bald reichlich Gebrauch machen.
Die Antwort wurde hier mit dem Dollarzeichen unterdrückt. Die kennst Du doch nun schon. Oder?
Hier ist sie nun, unsere kleine Welt, in der das Spiel stattfindet.
|
Wir definieren als erstes das Symbol map, das eine Menge an Informationen über unser Spielfeld enthält.
map: '[[living_room, "you are in the living_room of a wizards house. there is a wizard snoring loudly on the couch. ", [west, door, garden], [upstairs, stairway, attic] ], [garden, "you are in a beautiful garden. there is a well in front of you. ", [east, door, living_room] ], [attic, "you are in the attic of the wizards house. there is a giant welding torch in the corner. ", [downstairs, stairway, living_room] ]]$
map ist eine Liste aus drei Listen. Der erste Eintrag ist jeweils der Name des Ortes und der zweite beschreibt diesen Ort in zwei Sätzen. Die weiteren Einträge sind wieder Listen, die in Stichworten enthalten, in welche Richtung und wie man in einen anderen Raum kommt.
Die Whiskeyflasche befindet sich, falls er nicht gerade seinen
Rausch ausschläft, stets in der Hand des Zauberers.
|
object_locations: '[[whiskey_bottle, living_room], [bucket, living_room], [chain, garden], [frog, garden]]$
Jedes Objekt ist mit einem Ort assoziiert. Eine Liste, die wie object_locations aus mehreren Listen besteht, nennt man eine assoziierte Liste. Der jeweils erste Listeneintrag ist der Schlüssel, über den wir auf den Rest der Liste zugreifen können. Das werden wir bald sehen. map ist übrigens auch eine assoziierte Liste.
Ok, wir haben jetzt das Spielfeld und die Spielfiguren definiert. Fehlt nur noch, dass wir festlegen, wie es los gehen soll.
location: 'living_room$
Wir befinden uns also im Wohnzimmer des Zauberers.