Autor |
Nachricht |
< Das Fahrzeug "Zug" |
|
Verfasst am:
Mo, 30 Aug 2004 - 21:13
|
|
|
Wasserträger
Anmeldungsdatum: 10.07.2004
Beiträge: 104
Wohnort: Hannover
|
|
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? _________________ Subst 'TAG-Amateur' m
Adj 'lieb' 'nett'
Attr Person
Besch 'Er ist im Moment [selbst.Zust].' |
|
|
|
|
|
Verfasst am:
Mo, 30 Aug 2004 - 22:57
|
|
|
Experte
Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München
|
|
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:
Code: |
#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
|
_________________ Every silver lining has a cloud. |
|
|
|
|
|
Verfasst am:
Di, 31 Aug 2004 - 13:30
|
|
|
Wasserträger
Anmeldungsdatum: 10.07.2004
Beiträge: 104
Wohnort: Hannover
|
|
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! :-) _________________ Subst 'TAG-Amateur' m
Adj 'lieb' 'nett'
Attr Person
Besch 'Er ist im Moment [selbst.Zust].' |
|
|
|
|
|
Verfasst am:
Di, 31 Aug 2004 - 14:45
|
|
|
Experte
Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München
|
|
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. _________________ Every silver lining has a cloud. |
|
|
|
|
|
Verfasst am:
Mi, 1 Sep 2004 - 15:39
|
|
|
Wasserträger
Anmeldungsdatum: 10.07.2004
Beiträge: 104
Wohnort: Hannover
|
|
Martin hat folgendes geschrieben: | Code: |
Weg zusteigen_bitte
Ausf
Bed (U_Bahn_Pos = aRaum)
'Im Moment ist kein Zug im Bahnhof.'
gehezu U_Bahn
EndeAusf
|
|
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. _________________ Subst 'TAG-Amateur' m
Adj 'lieb' 'nett'
Attr Person
Besch 'Er ist im Moment [selbst.Zust].' |
|
|
|
|
|
Verfasst am:
Mi, 1 Sep 2004 - 19:50
|
|
|
Experte
Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München
|
|
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:
Code: |
Weg zusteigen_bitte
Ausf
Bed /(Gegen_U_Bahn_Pos = aRaum)
'Der Zug ist am gegenüberliegenden Bahnsteig.'
Bed (U_Bahn_Pos = aRaum)
'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. _________________ Every silver lining has a cloud. |
|
|
|
|
|