Forum moved to if-forum.org
Autor Nachricht
<  Das Fahrzeug "Zug"
TAG-Amateur
BeitragVerfasst am: Mo, 30 Aug 2004 - 21:13  Antworten mit Zitat
Wasserträger
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].'
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Martin
BeitragVerfasst am: Mo, 30 Aug 2004 - 22:57  Antworten mit Zitat
Experte
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.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
TAG-Amateur
BeitragVerfasst am: Di, 31 Aug 2004 - 13:30  Antworten mit Zitat
Wasserträger
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].'
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Martin
BeitragVerfasst am: Di, 31 Aug 2004 - 14:45  Antworten mit Zitat
Experte
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.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
TAG-Amateur
BeitragVerfasst am: Mi, 1 Sep 2004 - 15:39  Antworten mit Zitat
Wasserträger
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].'
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Martin
BeitragVerfasst am: Mi, 1 Sep 2004 - 19:50  Antworten mit Zitat
Experte
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.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Alle Zeiten sind GMT + 1 Stunde (MEZ)

Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Seite 1 von 1
if-de :: Forum Foren-Übersicht  >  T.A.G.

Neues Thema eröffnen   Neue Antwort erstellen


 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.



Kontakt: Administrator

Powered by phpBB and NoseBleed v1.05