Schleifen in AOQML

Re: Schleifen in AOQML

Beitragvon Gaddezwerch » Mo 22 Apr, 2013 21:46

Pergor hat geschrieben:Ansonsten weiß ich nicht, ob der "for"-Tag noch für andere von mir angesprochene Punkte benutzt werden kann.


Na ich denke, dass man zumindest nicht mehr auf retain+replay zurückgreifen muss und somit den Code kürzer + übersichtlicher halten kann. Auch die Selektierungssachen sollten nicht mehr ganz so umständlich sein (hier sehe ich noch den größten Verbesserungsbedarf für die Engine).

Eine Erweiterung für <has> ist jetzt nicht mehr angedacht.

Um das Gesamtvermögen der Gruppe zu bekommen, ist dann sowas möglich:
Code: Alles auswählen
<store name="gold_gesamt">0</store>
<for all="${sys:heroes}" name="heldid">
  <select hero="${heldid}"/>
  <store name="gold_held"><get attribute="cash"/></store>
  <set name="gold_gesamt" inc="${gold_held}" show="none"/>
</for>


Pergor hat geschrieben:Zu der Sache mit <for all="Singen|Schleichen|Schwimmen" name="talent"> kann ich so nicht viel sagen. Soweit ich das sehe, muss man hier ja einen einzigen Failure-Pfad anlegen und der liefert dann immer das gleiche, egal welche der drei Proben man nun verhauen hat, oder? Und kann ich die Proben mit verschiedenen Erschwernissen versehen? Wenn, dann sehe ich nicht, wie.

Absolut richtig. Ist halt immer die Frage, was machen will. Wenn man nur mehrere Proben durchführen will und am Ende schauen will, wie viele davon bestanden wurden - die Zweige sonst nicht ausgestalten will - kann es mit einer for-Schleife "einfacher" sein. Aber ich stimme dir zu, häufig wird man es nicht brauchen.
:meidetdasorkland: <-- Das meine ich ernst! Wirklich!
Gaddezwerch
Programmierer
Programmierer
 
Beiträge: 4848
Registriert: Fr 18 Mai, 2007 00:04
Heldenname: Alos Traken

Re: Schleifen in AOQML

Beitragvon cvk » Mo 22 Apr, 2013 21:50

Also für die Schleife mit den Talenten habe ich bereits eine Anwendung im Waisenhaus.

Die andere Schleife bastel ich bei Gelegenheit in die Stadterkundung ein anstelle des retain-replay-Monsters, habe ich gerade vorm Hochladen nicht mehr dran gedacht. Zudem benutze ich sie gerade bei der Gruppenanpassung einer ZB, also ... Wird benutzt.

Das Monster versteckt sich übrigens hier: Select

Falls du es rausnehmen willst.
"[T]he Land of Antamar, where freedom reigns for all."
Beatty, Susi; Gunter, Kery: Angie the Ant and the Bumblebee Tree. O.O., o.V., 2005.
Benutzeravatar
cvk
Oberst
Oberst
 
Beiträge: 3088
Registriert: Fr 13 Jul, 2012 16:10
Heldenname: Lunarias Mondenweh

Re: Schleifen in AOQML

Beitragvon Pergor » Mo 22 Apr, 2013 22:05

Gaddezwerch hat geschrieben:Auch die Selektierungssachen sollten nicht mehr ganz so umständlich sein [...]

Okay, dann muss ich wohl nochmal genauer hinschauen. Für mich ist das leider auch nicht immer so intuitiv, deswegen freue ich mich immer über Beispiele im Wiki, die haben für mich immer den größten Lerneffekt. So lange beschäftige ich mich noch mit AOQML. Für die Beispiele im letzten Post von mir weiß ich so nicht, wie ich das lösen soll...

Gaddezwerch hat geschrieben:Um das Gesamtvermögen der Gruppe zu bekommen, ist dann sowas möglich [...]

Ja, so hatte ich mir das auch schon zurechtgebastelt (nur mit "eval+" statt mit "inc"). Ist auf jeden Fall einfacher als mit retain. Bei "has" muss man dann wohl wirklich nichts mehr aufrüsten, zumal es ja für Items das "function" gibt.

@cvk: Monster? Rausnehmen?
Benutzeravatar
Pergor
Oberleutnant
Oberleutnant
 
Beiträge: 1113
Registriert: Do 07 Jun, 2007 18:45
Wohnort: Turm des Magiers
Heldenname: inaktiv

Re: Schleifen in AOQML

Beitragvon cvk » Mo 22 Apr, 2013 22:11

Pergor hat geschrieben:@cvk: Monster? Rausnehmen?


So selektiert man jetzt alle Helden nacheinander durch und lässt sie was machen:

Code: Alles auswählen
<for all="${sys:heroes}" name="heldid">
  <select hero="${heldid}"/>
  <p>HeldID: <fetch name="heldid"/>, Name: <get attribute="name"/></p>
</for>


So ging es vorher:
Code: Alles auswählen
    <retain name="helden-durchgehen" id="helden-durchgehen-1">
    <set name="aktuelle_nr" inc="1" show="none"/><!-- zum Debuggen show="result" verwenden -->
     
    <!-- Held selektieren -->
    <store name="heroAttr">nr_<fetch name="aktuelle_nr"/></store><!-- z.B. nr_1 -->
    <select hero="${heroAttr}"/>
    <p><q>Hallo, ich heiße <get attribute="name"/> und ich bin <get attribute="race"/></q>.</p>
     
    <!-- gibt es noch weitere Gruppenmitglieder? -->
    <switch attribute="anzahl_gruppenmitglieder">
    <case name="aktuelle_nr">
    <!-- Unsere Variable 'aktuelle_nr' entspricht jetzt dem Attribut 'anzahl_gruppenmitglieder'.
      Daher wurden alle Gruppenmitglieder einmal aufgerufen.
      Daher nichts weiter machen. -->
    </case>
    <else>
    <p>Der nächste:</p>
    <!-- sich erneut aufrufen -->
    <replay name="helden-durchgehen" />
    </else>
    </switch>
    </retain>
     
    <p>In diesem kleinen Beispiel stellen sich alle Helden der Gruppe kurz vor:</p>
    <store name="aktuelle_nr">0</store>
    <replay name="helden-durchgehen"/>


Das habe ich mal plakativ als retain-replay-Monster bezeichnet. Und es war als Hinweis an Gaddezwerch gedacht, dass man das eventuell aus dem Wiki rausnehmen könnte, geht ja jetzt erheblich leichter.
"[T]he Land of Antamar, where freedom reigns for all."
Beatty, Susi; Gunter, Kery: Angie the Ant and the Bumblebee Tree. O.O., o.V., 2005.
Benutzeravatar
cvk
Oberst
Oberst
 
Beiträge: 3088
Registriert: Fr 13 Jul, 2012 16:10
Heldenname: Lunarias Mondenweh

Re: Schleifen in AOQML

Beitragvon Enno » Mo 22 Apr, 2013 23:16

Auch wenn ihr mit der retain-replay-Schleife ein umfangreiches Konstrukt geschaffen habt, das nun durch die neue for-Schleife in vielen Situationen zum Glück überflüssig wird, Respekt für diese und andere kreative Verwendungen von AOQML!
"Es genügt nicht, nur fleißig zu sein - das sind die Ameisen. Die Frage ist vielmehr: wofür sind wir fleißig?"
Henry David Thoreau
Benutzeravatar
Enno
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 922
Registriert: Sa 13 Dez, 2008 11:58
Heldenname: Rauert Huisdorn/ Theresa Meistersinger

Re: Schleifen in AOQML

Beitragvon Lowlander » Di 23 Apr, 2013 08:34

Gaddezwerch hat geschrieben:Jo, ist jetzt implementiert und nutzbar.

Code: Alles auswählen
<for all="${sys:heroes}" name="heldid">...


Code: Alles auswählen
<for all="Singen|Schleichen|Schwimmen" name="talent">...



Cool, :danke:
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Vorherige

Zurück zu Antamar®-Archiv



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste