Autor |
Nachricht |
< Sprungbefehle in Ausführungsblöcken |
|
Verfasst am:
Fr, 22 Jul 2005 - 13:22
|
|
|
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. |
|
|
|
|
|
Verfasst am:
Fr, 22 Jul 2005 - 13:53
|
|
|
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. |
|
|
|
|
|
Verfasst am:
Fr, 22 Jul 2005 - 13:59
|
|
|
|
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 |
|
|
|
|
|
Verfasst am:
Fr, 22 Jul 2005 - 14:01
|
|
|
|
Ah, der Meister hat gleichzeitig selbst geantwortet. Ich wähnte ihn im Chiemgau. |
|
|
|
|
|
Verfasst am:
Fr, 22 Jul 2005 - 14:05
|
|
|
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 |
|
|
|
|
|
Verfasst am:
Fr, 22 Jul 2005 - 14:16
|
|
|
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. |
|
|
|
|
|
Verfasst am:
Fr, 22 Jul 2005 - 15:23
|
|
|
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. |
|
|
|
|
|
|
Alle Zeiten sind GMT + 1 Stunde (MEZ) |
|
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.
|
|