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.
21.10.2001, Martin Oehm
|
 |
Fünf Unterschiedliche Ideen rund um ein Thema
Auftanken Kurzentwürfe für Abenteuer
Ersatzteile Fertige Objekte, Befehle und Räume für Abenteuer
Werkstatt Mechanik und Innenleben von Textadventures
Testfahrt Die Straßenlage deutscher Adventures
Grand Prix Der Textadventure- Wettbewerb
Abbiegen Lohnende Nebenstraßen
Intern Was textfire.de will, wer es macht und wie man mitmacht
|