Forum moved to if-forum.org
Autor Nachricht
<  Sprungbefehle in Ausführungsblöcken
neon
BeitragVerfasst am: Fr, 22 Jul 2005 - 13:22  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 22.07.2005
Beiträge: 42
Wohnort: Wiesbaden

Hallo und guten Tag erstmal,

ich habe ein kleines Problem bei der Programmierung meines ersten Adventures mit TAG.

Ich habe einen Ausführungsblock, durch den ein Menüsystem eines Computers abgebildet wird. Das funktioniert komplett über wenn/dann-Abfragen und bis jetzt klappt auch alles was ich damit machen will. Das einzige Problem ist, wenn ich einen Punkt aufgerufen habe, der kein neues Untermenü mehr enthält, ist der Ausführungsblock zuende und ich lande wieder in der normalen Befehlseingabe. Da aber mehrere Funktionen über das Menü gesteuert werden können, ist es etwas nervig, das Computerterminal im Spiel immer wieder bedienen zu müssen, um eine weitere Aktion auszuführen.

Deshalb die Frage:

Gibt es bei T.AG. eine Anweisung, mit der ich an den Anfang des Anweisungsblocks zurückgehen kann um die Anweisung komplett von vorn auszuführen?

Oder gibt es ersatzweise eine Möglichkeit, Sprungmarken zu setzen, die mit einem Sprungbefehl angesprungen werden?

Ich gebe zu daß ich noch nicht das komplette Handbuch durchgelesen habe, aber in den Beispielen die ich bis jetzt gesehen habe, habe ich nichts gefunden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Martin
BeitragVerfasst am: Fr, 22 Jul 2005 - 13:53  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München

neon hat folgendes geschrieben:
Gibt es bei T.A.G. eine Anweisung, mit der ich an den Anfang des Anweisungsblocks zurückgehen kann um die Anweisung komplett von vorn auszuführen?

Oder gibt es ersatzweise eine Möglichkeit, Sprungmarken zu setzen, die mit einem Sprungbefehl angesprungen werden?

Einen Sprungbefehl und Sprungmarken gibt es in T.A.G. nicht. Du könntest aber eine Schleife schreiben, die nur dann verlassen wird, wenn eine lokale Variable wahr oder falsch ist, etwa so:

Code:

Aktion Menue
Ausf
    lokal t
    lokal Abbruch
    lösche Abbruch
    wiederhole
        Text '(a) Anzeige
            [x](s) Software
            [x](b) beenden
           
            Eingabe:'
        Auswahl t 'asb'
        wenn (t = 1) ...
        wenn (t = 2) ...
        wenn (t = 3) dann
            setze Abbruch
            Text 'Bye, bye...'
        Ende
    bis (Abbruch)
EndeAusf


Oder du könntest eine Endlosschleife schreiben, aus der du dann mit stop oder Bed herausspringst:

Code:

Aktion Menue
Ausf
    lokal t
    wiederhole
        Text '(a) Anzeige
            [x](s) Software
            [x](b) beenden
           
            Eingabe:'
        Auswahl t 'asb'
        Bed (t < 3) 'Bye, bye...'
        ...
    bis (t = 100)   ! t kann eigentlich nie 100 sein
EndeAusf


Du kannst dir auch einmal den Code zu reden.adx anschauen, dort wird auch ein Menüsystem benutzt.
_________________
Every silver lining has a cloud.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Gast
BeitragVerfasst am: Fr, 22 Jul 2005 - 13:59  Antworten mit Zitat






neon hat folgendes geschrieben:
Hallo und guten Tag erstmal,

Hallo zurück!

neon hat folgendes geschrieben:
Ich habe einen Ausführungsblock, durch den ein Menüsystem eines Computers abgebildet wird. Das funktioniert komplett über wenn/dann-Abfragen

Wäre da nicht Jenach geschickter? Nur ein Vorschlag, ohne deinen Code zu kennen.

Bed(ingung) darfst du aber nicht verwenden, weil das ja ein implizites Stop verursacht.

neon hat folgendes geschrieben:
Das einzige Problem ist, wenn ich einen Punkt aufgerufen habe, der kein neues Untermenü mehr enthält, ist der Ausführungsblock zuende und ich lande wieder in der normalen Befehlseingabe.

Der Ausführungsblock ist erst mit einem Stop zuende - oder wenn er keine Befehle mehr enthält.

Ich denke, dein Problem ist ganz einfach lösbar, indem du den Code in eine Schleife einbaust, die solange läuft, bis eine bestimmte Flagge gesetzt wird. Gibt der Spieler, sagen wir einmal, 0 ein (für: Aktion abbrechen), setzt du diese Flagge, und du kommst zur Standard-Texteingabe zurück (bzw. der Spieler).

Siehe Handbuch, Kapitel 5.3.
http://martin-oehm.de/tagman/kap_05.html

neon hat folgendes geschrieben:
Da aber mehrere Funktionen über das Menü gesteuert werden können, ist es etwas nervig, das Computerterminal im Spiel immer wieder bedienen zu müssen, um eine weitere Aktion auszuführen.

Schon richtig, nur ein Hinweis: Korrekter Weise solltest du dann aber bei jeder Runde den Rundenzähler um 1 vergrößern: Zeit vergeht ja trotzdem.

neon hat folgendes geschrieben:
Oder gibt es ersatzweise eine Möglichkeit, Sprungmarken zu setzen, die mit einem Sprungbefehl angesprungen werden?

Zum Glück nicht! Du würdest beim Betatesten verzweifeln.

neon hat folgendes geschrieben:
Ich gebe zu daß ich noch nicht das komplette Handbuch durchgelesen habe, aber in den Beispielen die ich bis jetzt gesehen habe, habe ich nichts gefunden.

Möglichst ohne besserwisserisch zu klingen: Bitte hol das nach. Das Handbuch liest sich ja wirklich schnell und leicht. Alle Erweiterungen brauchst du nicht zu kenne, und die Beispiele musst du auch nicht kennenlernen, aber ohne Handbuchlektüre wirst du so viele einfache Fehler machen, dass das Debuggen des ersten Spiels zur Hölle wird - weil du erkennst, dass du ganze Codeblöcke umschreiben musst, oder du baust eine Ausnahme nach der anderen, und das Chaos wird immer größer.

Schritt für Schritt kannst du dir dann auch die Erweiterungen auf der Seite Nützliches bei Martin anschauen:
http://martin-oehm.de/tag/nuetzl.html

In deinem Fall passt die Erweiterung zum Thema Reden sehr gut; schau sie dir einmal an und versuche, sie zu verstehen (für Anfänger sicher nicht ganz leicht, aber die Mühe wert).

Viele Grüße,
Florian
Nach oben
Florian
BeitragVerfasst am: Fr, 22 Jul 2005 - 14:01  Antworten mit Zitat
Gast





Ah, der Meister hat gleichzeitig selbst geantwortet. Ich wähnte ihn im Chiemgau.
Nach oben
neon
BeitragVerfasst am: Fr, 22 Jul 2005 - 14:05  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 22.07.2005
Beiträge: 42
Wohnort: Wiesbaden

Die erste Möglichkeit gefällt mir am besten.

Ich werde das ausprobieren und später bescheid sagen ob es für meine Zwecke das richtige ist.

Vielen Dank
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
neon
BeitragVerfasst am: Fr, 22 Jul 2005 - 14:16  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 22.07.2005
Beiträge: 42
Wohnort: Wiesbaden

Anonymous hat folgendes geschrieben:
neon hat folgendes geschrieben:
Ich gebe zu daß ich noch nicht das komplette Handbuch durchgelesen habe, aber in den Beispielen die ich bis jetzt gesehen habe, habe ich nichts gefunden.

Möglichst ohne besserwisserisch zu klingen: Bitte hol das nach. Das Handbuch liest sich ja wirklich schnell und leicht. Alle Erweiterungen brauchst du nicht zu kenne, und die Beispiele musst du auch nicht kennenlernen, aber ohne Handbuchlektüre wirst du so viele einfache Fehler machen, dass das Debuggen des ersten Spiels zur Hölle wird - weil du erkennst, dass du ganze Codeblöcke umschreiben musst, oder du baust eine Ausnahme nach der anderen, und das Chaos wird immer größer.


Da gebe ich Dir vollkommen recht, ich gehöre nur leider zu den Menschen die besser aus Beispielen oder durch Probieren lernen können als aus Büchern. Ich komme bei Büchern, gerade wenn es um Programmierung geht, nicht weiter als bis Seite 10, dann steht es meistens schon wieder im Regal. Ich probiere das jetzt seit 20 Jahren, es hat keinen Sinn. Wenn ich erst ein ganzes Handbuch lesen muß, endet es damit, daß ich mit Programmieren gar nicht erst anfange.

Davon abgesehen ist das Adventure sowieso schon halb fertig. Mir fehlen nur noch 5 Räume, etwa 10 Objekte und ein bißchen Rätselcode. Es funktioniert alles so wie ich es haben will, und ich denke daß das mit der Schleife auch mein einziges aktuelles Problem lösen wird. Bei allem was noch kommt habe ich schon klare Vorstellungen wie es funktioniert.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
neon
BeitragVerfasst am: Fr, 22 Jul 2005 - 15:23  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 22.07.2005
Beiträge: 42
Wohnort: Wiesbaden

Ich habe es mit der ersten Möglichkeit hinbekommen. Sieht jetzt so aus wie ich es haben möchte.

Vielen Dank nochmal für die Tipps.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
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