IF-Forum

» IF-Forum - Autorencafé - Schreiben! - Das Fahrzeug "Zug"
AntwortenNeues ThemaNeue Umfrage

Das Fahrzeug "Zug"

Geschrieben um 22:13 am 30.08.2004 | Zitat | Editieren | Löschen
TAG-Amateur
Mitglied
Master Gumby
Beiträge: 103

Ich will einen Zug in mein Spiel definieren,

doch ich weiß nicht wie. Er soll in jedem Zug

eine Station weiterfahren und da sollte man

eben aussteigen können.

Leider steht dazu nichts im Handbuch, Kapitel 10.4.

Also, kann mir da jemand helfen?

Geschrieben um 23:57 am 30.08.2004 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

Ein Zug ist kein Fahrzeug im Sinne von T.A.G., das ein Fahrzeug als ein Objekt definiert, das der Spieler betreten kann und das sich dann mit ihm durch die Räume bewegt. Ein Boot halt, ein Fahrrad, ein Skateboard oder ein Reittier. Einen Zug implementiert man wohl besser als einen separaten Raum, dessen Ausgänge sich ändern.

Da der Zug einen Fahrplan hat, ändert sich der Raum nach einer vorgeschriebenen Regel, auch wenn der Spieler nicht damit fährt. Deshalb benutzt man hier wohl am besten eine Aktion*. Andere große Fahrzeuge bewegen sich nur nach bestimmten Aktionen des Spielers.

Siehe hierzu auch den Lift von textfire.de und den Wanderer aus dem T.A.G.-Tutorium, der eigenständige Dinge tut.

Und hier noch ein wenig Code. Nicht besonders gut ausgebaut und etwas unter dem heutigen Standard, aber er funktioniert:


#DAT 'normal.adv'

RaumVar U_Bahn_Pos

Flagge U_Bahn_Zähler

Raum U_Bahn

Name 'In der U-Bahn'

Raus aussteigen_bitte

Besch Ausf

  Text 'Jetzt, um die Mittagszeit, ist wenig los in der

    U-Bahn.'

  wenn (U_Bahn_Pos = 0) dann

    Text '[#]Die U-Bahn fährt durch einen dunklen Tunnel.'

  sonst

    Text '[#]Die U-Bahn hält gerade am Bahnhof

    "[U_Bahn_Pos]".'

  Ende

EndeAusf

Weg aussteigen_bitte

Ausf

  Bed /(U_Bahn_Pos = 0)

    'Du kannst hier nicht aussteigen. Warte, bis der

    Zug in einem Bahnhof einfährt.'

  geheZu U_Bahn_Pos

EndeAusf

Aktion *

Ausf

  wenn /(U_Bahn_Pos = 0) dann

    wenn (aRaum = U_Bahn_Pos)

      Text '"Zurückbleiben!"

        Mit einem Zischen schließen sich die

        Türen und die U-Bahn fährt aus dem Bahnhof.'

    wenn (aRaum = U_Bahn)

      Text '"Zurückbleiben!"

        Mit einem Zischen schließen sich die

        Türen und die U-Bahn setzt ihre Fahrt fort.'

  Ende

  Jenach U_Bahn_Zähler

    (1)     sei U_Bahn_Pos Universität

    (4)     sei U_Bahn_Pos Kirchplatz

    (7)     sei U_Bahn_Pos Adenauerallee

    (10)    sei U_Bahn_Pos Stadion

    (12)    lösche U_Bahn_Zähler

    (sonst) sei U_Bahn_Pos 0

  Ende

  wenn /(U_Bahn_Pos = 0) dann

    ObjNach U_Bahn_Deko U_Bahn_Pos

  sonst

    ObjNach U_Bahn_Deko Nirwana

  Ende

  wenn /(U_Bahn_Pos = 0) dann

    wenn (aRaum = U_Bahn_Pos)

      Text 'Ein Zug fährt in den Bahnhof ein, die Türen

        öffnen sich.'

    wenn (aRaum = U_Bahn)

      Text '[#]"[U_Bahn_Pos]!". Der Zug fährt in einen

        Bahnhof ein, die Türen offnen sich.'

  Ende

  inkr U_Bahn_Zähler

EndeAusf

Obj U_Bahn_Deko

Name 'U-Bahn' f

Vor 'u'

Subst 'bahn' f, 'zug' m, 'wagen' p, 'waggons' p

Besch 'Eine bleue U-Bahn mit drei Wagen.'

Raum Universität

Name 'Universität'

rein zusteigen_bitte

Besch 'Hier hängen einige Studenten herum.'

Raum Kirchplatz

Name 'Kirchplatz'

rein zusteigen_bitte

Besch 'Hier hängen einige Junkies herum.'

Raum Adenauerallee

Name 'Adenauerallee'

rein zusteigen_bitte

Besch 'Geschäftsleute eilen über den Bahnsteig.'

Raum Stadion

Name 'Stadion'

rein zusteigen_bitte

Besch 'Die Gesänge der Fußballfans dröhnen überall.'

Weg zusteigen_bitte

Ausf

  Bed (U_Bahn_Pos = aRaum)

    'Im Moment ist kein Zug im Bahnhof.'

  gehezu U_Bahn

EndeAusf
Geschrieben um 14:30 am 31.08.2004 | Zitat | Editieren | Löschen
TAG-Amateur
Mitglied
Master Gumby
Beiträge: 103

Dankeschön!

Nur eine Frage habe ich noch:

Wie macht man es, dass wenn der Zug

an einer Endstation ankommt, er dann

auch wieder zurückfährt, und das auch

auf anderen Schienen. Also ich meine

es genau so, wie es bei der Atuobahn ist.

Es gibt Gegenverkehr. Und so soll auch der

Zug definiert sein. Also, dass es zwei Schienen

gibt. auf der einen fährt der Zug in die eine, auf

der anderen eben in die andere Richtung. Das

heißt aber auch, dass man zwei Bahnsteige braucht.

Wie definiert man dann die noch dazu?

Klingt ziemlich komplex, ich hoffe aber, dass du es verstehst! :-)

Geschrieben um 15:45 am 31.08.2004 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

Naja, wenn du sowieso zwei getrennte Bahnsteige pro Bahnhof hast, also zwei verschiedene Räume, z.B. Hbf_West und Hbf_Ost, dann kannst du diesen Code übernehmen, denn die Strecke ist dann ja nichts als ein degenerierter Ring.

Weitere Verfeinerungen des Codes überlasse ich aber dir, denn sonst schreibe ich lieber selbst ein Spiel mit einem Zug.

Geschrieben um 16:39 am 01.09.2004 | Zitat | Editieren | Löschen
TAG-Amateur
Mitglied
Master Gumby
Beiträge: 103
<td valign="top"><div class="post"><p><strong>Martin:</strong></p> <blockquote> <pre><code></code></pre> </blockquote> <p>Weg zusteigen_bitte</p> <p>Ausf</p> <p>  Bed &#40;U_Bahn_Pos = aRaum&#41;</p> <p>    'Im Moment ist kein Zug im Bahnhof.'</p> <p>  gehezu U_Bahn</p> <p>EndeAusf</p> <pre><code> Da gibt's aber leider noch ein Problem. Könntest du mir bitte nur noch einmal helfen? Also, der Zug ist gerade im Bahnhof, aber auf dem anderen Bahnsteig, den man von dem einen aus sehen kann. Dann soll ja nicht auf die Eingabe **rein** der Satz 'Im Moment ist kein Zug im Bahnhof.' erscheinen. Wie verändert man denn das? Also, der Satz kann ja stehenbleiben, aber es muss noch die Bedingung folgen, dass der Zug auch nicht am anderen Bahnsteig steht.</code></pre></div></td>
Geschrieben um 20:50 am 01.09.2004 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

Zitat:

Könntest du mir bitte nur noch einmal helfen?

Na, so war das nicht gemeint. Ich hatte nur den Verdacht, dass du mit deiner Gegenfrage zu schnell warst, ohne den Code ausprobiert zu haben ;-)

Zitat:

Also, der Zug ist gerade im Bahnhof, aber auf dem anderen Bahnsteig, den man von dem einen aus sehen kann ...

Guter Punkt. Ich würde eine zusätzliche Raumvariable Gegen_U_Bahn_Pos oder so - der Name ist noch ausbaufähig - definieren, die den gegenüberliegenden Bahnsteig benennt. Dorthin verschiebe ich eine zweite Zug-Deko, die das Attribut entfernt hat.

Dann liest sich der Code so:


Weg zusteigen_bitte

Ausf

Bed /&#40;Gegen_U_Bahn_Pos = aRaum&#41;

  'Der Zug ist am gegenüberliegenden Bahnsteig.'

Bed &#40;U_Bahn_Pos = aRaum&#41;

  'Im Moment ist kein Zug im Bahnhof.'

gehezu U_Bahn

EndeAusf

Durch clevere Programmierung könnte man sich auch eine Deko sparen, aber das verkompliziert die Dinge nur.

AntwortenNeues ThemaNeue Umfrage
Powered by Spam Board SVN © 2007 - 2021
Impressum / Datenschutz