Fahrstühle sind leicht zu implementieren. Der Ausgang wechselt einfach sein Ziel, je nachdem, in welchem Stock er sich befindet. Ein einfacher Trick, der aber den Simulationswert der Spielwelt erhöht.
Dieser Lift ist in einem Kaufhaus, die eigentliche Schwierigkeit beim Programmieren sind hier die Steuerknöpfe.
Flagge Stockwerk 3 ! Stockwerke gehen von 1 (2. UG) bis 8 (5. OG) Flagge Fahrtrichtung ! Fahrtrichtung ist 0 (Stillstand), 1 (auf) ! oder 2 (ab) Raum Lift Name 'Lift' S Liftausgang Besch Ausf lokale objVar xObj Text 'Dies ist der durch übermäßigen Einsatz von blank poliertem Metall etwas ungemütliche Lift des Kaufhauses. An der linken Seite sind acht Knöpfe angebracht, die die Stockwerke von 2. UG bis 5. OG bezeichnen.' objListe xObj (xObj Knopf) und (xObj ein) wenn (anzliste > 0) Text '[Liste 0] leuchte[t 0].' Text '[#]Über der [lifttür.zust]en Tür im Süden befindet sich die Stockwerksanzeige:' Text "b" Stockwerk EndeAusf Weg Liftausgang Ausf Bed (Lifttür offen) 'Die Lifttür ist noch zu.' jenach Stockwerk (1) geheZu Tiefgarage (2) geheZu Feinkostabt (3) geheZu Schreibwaren (4) geheZu Lifestyle (5) geheZu Damenmode (6) geheZu Herrenmode (7) geheZu Sportabt (8) geheZu Terrasse Ende EndeAusf
Nun die Knöpfe. Durch Drücken der Knöpfe kann man sie einschalten. Die Knöpfe sind in einer Klasse zusammengefasst. Ihr Zustand (ein oder aus) werden zur Liftsteuerung und für die Raumbeschreibung im Lift benutzt.
ObjKlasse Knopf Plural 'der Knöpfe' p Subst 'knopf' m Var stock 0 Ort Lift Attr fest Zust aus Besch '[Der selbst] [ist] [selbst.zust].' VorAusf (drücken) Bed (selbst aus) '[Der selbst] [ist] bereits an, er geh[t] automatisch aus, wenn der Lift das Stockwerk erreicht.' Wenn (selbst.stock = Stockwerk) dann Bed (Lifttür geschlossen) 'Nichts passiert.' objZust Lifttür offen stop 'Die Lifttür geht auf.' Ende objZust selbst ein stop '[Der selbst] leuchte[t] nun.' (anmachen ausmachen) Stop 'Wenn Du auf [den selbst] drücken willst, dann sage dies.' EndeAusf Obj Knopf_2UG (Knopf) Name 'Knopf fürs 2. UG' m 4 lName '2. UG' m 1 Adj 'zweit' 'zwot' Vor 'tief' Subst '2UG' n, 'ug' n, 'untergeschoss' n, 'garage' f Var Stock 1 ! Hier weitere Knöpfe einfügen
Nun benötigen wir noch eine Steuerungsroutine für den Lift. Ist Fahrtrichtung nicht gesetzt, wird versucht, eine zu ermitteln. Ist eine gefunden, wird zunächst die Tür geschlossen, und dann der Lift bewegt.
Der Algorithmus zum Bestimmen der Richtung ist sehr simpel, reicht aber für unsere Zwecke aus. Nun noch zwei Textblöcke für die Beschreibung der Etagen und Zielräume für die Weg-Definition:
Block "b" 1 '2. UG' 2 '1. UG' 3 'EG' 4 '1. OG' 5 '2. OG' 6 '3. OG' 7 '4. OG' 8 '5. OG' Block "a" 1 'Tiefgarage/' 2 'Lebensmittel und Feinkost, Spirituosen/' 3 'Schreibwaren, Bücher, Spielwaren/' 4 'Kochen, Wohnen & Lifestyle/' 5 'Damenmode/' 6 'Herren- und Kindermode/' 7 'Sport- und Freizeitartikel/' 8 'Dachterrasse und Restaurant/' Raum Tiefgarage Name 'Tiefgarage' Besch ...
Zu jedem Stockwerk muss natürlich noch ein Raum implementiert werden. Und die Tür muss von beiden Seiten sichtbar sein, so dass man Ort2 anpassen muss. In jedem Stockwerk muss es außerdem einen Knopf zum Rufen des Lifts geben. (Dieser kann als ein Objekt implementiert werden und muss lediglich den passenden Knopf im Lift einschalten.)
Wer will, kann den Fahrtalgorithmus noch verfeinern oder einen Liftboy und andere Liftbenutzer implementieren.