[ t e x t f i r e . d e - Startseite ]

Sitemap
Druckversion


Ersatzteile

Ein Fahrstuhl

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

 
[nach oben]