PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Loop - wieso, weshalb, warum?



MarcL
25.11.2007, 09:17
Hallo ^^y

ich hatte eigentlich schon länger vor diese Frage zu stellen aber jetzt muss es einfach mal sein, da ich hier im Forum und sonstwo einfach nichts dazu gefunden habe.
Also mich interessiert brennend wofür man einen Loop braucht.
Das was sich in einem Loop befindet wiederholt sich doch immer und immer wieder bis ein Break out of Loop kommt.
Nun ist doch das aber das gleiche wie wenn ich einen Parallel Process nehme und bei einer bestimmten Condition z.B. einen Switch anstelle der diesen dann abstellt.
Was ist also der Unterschied und wofür braucht man z.B. nen Loop in nem Spiel. Ich hab irgendwie Angst, dass ich mein Spiel irgendwann fertigstelle und dann feststelle, dass ich bestimmte Stellen viel besser umsetzen hätte können, hätte ich gewusst was ein Loop ist.

Also dann ich bin gespannt auf eure Antworten!
MarcL

Cherry
25.11.2007, 09:28
Nun, ein Beispiel:



Message "Willkommen in der Trainingsarena! Der Kampf kann beginnen!"
Set Variable [Partynummer] = 10
Loop
Kampf [Partynummer]
Wenn Gewonnen
Fork [Partynummer] = 20
Message "Super, du hast alle besiegt!"
Break Loop
Else
Set Variable [Partynummer] += 1
Wenn Verloren
Message "Tja, das wars."
Break Loop
(hier ist das Ende vom Loop)
Message "Komm wieder, wenn du weiter trainieren willst."


Dieser Code macht einen Kampf mit allen Monstergroups von 10 bis 20, wenn du gewinnst, kommt der nächste Kampf, wenn du verlierst, ists vorbei.

Verstanden?

WebGeist
25.11.2007, 09:50
Ich hab das mit dem Cycle-Zeugs nie verstanden, bzw bei mir gabs immer Probleme.

Ich hab das dann mit Labels gemacht. Geht auch.

Jung
25.11.2007, 09:53
Ich hab das mit dem Cycle-Zeugs nie verstanden, bzw bei mir gabs immer Probleme.

Ich hab das dann mit Labels gemacht. Geht auch.

so cycle benutze ich selbst persönlich nie und rate auch davon ab da label sowieso besser ist... cycle ist im prinzip dasselbe wie label bloß bedienen ist es schwerer;)

WebGeist
25.11.2007, 10:03
so cycle benutze ich selbst persönlich nie und rate auch davon ab da label sowieso besser ist... cycle ist im prinzip dasselbe wie label bloß bedienen ist es schwerer;)

So direkt wollt ich das jetzt nicht ausdrücken. :)

Greyce
25.11.2007, 10:28
Was soll so schwer an einem Cycle zu verstehen sein?
Er wiederholt einfach den Code, welcher in ihm steht, bis ein Break Loop kommt.

Grundsätzlich ist aber davon abzuraten Cycles zu benutzen und die hier schon
angesprochenen Labels zu verwenden. Der Grund ist der, dass der Maker Labels schneller verarbeiten kann als Cycles.

~Waradience~

R.D.
25.11.2007, 11:38
joa...

Der Loop-Befehl ist einer der nützlichesten den ich kennen. Mit ihm kann man z.B. eine Code machen der eine Zahl solange hoch rechnend bis sie einen bestimmten Punkt erreicht hat.

tonystuan
25.11.2007, 11:44
Cycle geht eingentlich schneller als die Label und beim Codieren gehts auch schneller,ist aber nur Profis zu empfehlen,weil Anfänger mit Label leichter arbeiten können.

Kelven
25.11.2007, 12:43
... ist aber nur Profis zu empfehlen,weil Anfänger mit Label leichter arbeiten können.

Das meinst du jetzt aber nicht ernst, oder?

Pantoffelninja
25.11.2007, 12:49
Cycle geht eingentlich schneller als die Label und beim Codieren gehts auch schneller,ist aber nur Profis zu empfehlen,weil Anfänger mit Label leichter arbeiten können.
Der Argumentation kann ich nicht beipflichten aus folgenden Begründungen:
1. Das Arbeiten mit Loops und das Arbeiten mit Labels ist im Grunde identisch. Selbst die Anzahl der Zeilen an Codes müsste diesselbe sein. Bei Labels muss man Anfang und Wiederholungspunkt definieren, beim Loops muss man Anfang/Ende und Break definieren.
Ergo sind beide Arbeiten gleich schnell.
2. Loops können auch von Anfängern wunderbar benutzt werden. Ich habe in den Anfängen gerne Loops verwendet, bis ich etwas gelesen habe, was mir missfiel (s. Punkt 3) Als Alternative fand ich die Labels, die für mich sogar praktischer sind, weil man damit in meinen Augen mehr Möglichkeiten hat.
3. Habe ich irgendwo gelesen in diesen Board, dass besonders PPs und Loops auf die Performance schlägt. Labels sind daher freundlicher zur Performance. (Meine bisherige Erfahrung bestätigt dies)

WebGeist
25.11.2007, 13:37
Mir geht das mit den FORKs schon total auf die nerven, dass die so unübersichtlich sind. Ich weis nie so genau, wo eine fork anfängt, und wo sie aufhört, und dann kommt noch das Else hinzu. :rolleyes:

Cycles sehen für mich genau so aus, wie FORKs und desshalb nehm ich Abstand von ihnen. :rolleyes: :rolleyes:

MarcL
25.11.2007, 13:41
ah thx@all für die schnellen antworten :D :D :D jetzt muss ich nicht dumm sterben...

dann kann ich jetzt wenigstens in ruhe mit PPs und Labels weiterarbeiten ^^y

makenshi
25.11.2007, 16:50
Mir geht das mit den FORKs schon total auf die nerven, dass die so unübersichtlich sind. Ich weis nie so genau, wo eine fork anfängt, und wo sie aufhört, und dann kommt noch das Else hinzu. :rolleyes:

Cycles sehen für mich genau so aus, wie FORKs und desshalb nehm ich Abstand von ihnen. :rolleyes: :rolleyes:

Heißer Tipp: Kommentierung soll gegen unübersichtlichen Code helfen.

Jung
25.11.2007, 20:48
Cycle geht eingentlich schneller als die Label und beim Codieren gehts auch schneller,ist aber nur Profis zu empfehlen,weil Anfänger mit Label leichter arbeiten können.

Was?! Ich habe cycle noch nicht mal verstanden da label sowieso dasselbe ist. Trotzdem was soll daran "Profi" sein?


Mir geht das mit den FORKs schon total auf die nerven, dass die so unübersichtlich sind. Ich weis nie so genau, wo eine fork anfängt, und wo sie aufhört, und dann kommt noch das Else hinzu.

Cycles sehen für mich genau so aus, wie FORKs und desshalb nehm ich Abstand von ihnen.

Ich selber finde Forks wesentlich leichter. Forks sind Bedingungen die du brauchs damit das event dann passiert.

Beispiel: Du brauchs 1000 gold um in die Höhle zu kommen. Dann kommen Forks zum einsatz.Du gehs dann rauf und stells auf der ersten seite ganz unten auf money stellste auf 1000 und above und unten ein haken. Dann kommt das eigentlich event das schreibs du unter das fork condition und unter else schreibs du hin was passiert wenn man das nicht hat.

makenshi
25.11.2007, 21:25
Labels und Schleifen sind dasselbe?
In welchem Universum gilt das denn?

Ein Label ist eine Markierung im Code an die du mit einem Befehl springen kannst. Eine Schleife wiederholt den in ihr liegenden Code solange bis du einen Break Befehl gibst.
Du kannst mit einem Label auch so eine Wirkung erzeugen, jedoch ist das doch nicht dasselbe.

Forks sind zudem nichts was einfacher ist als ein Label.
Ich frag mich überhaupt wieso du diese zwei grundverschiedenen Befehle vergleichst. Mit einer Schleife kannst du eine Codepassage wiederholen.
Ein Fork ist nichts weiter als eine Bedingung die verhindern soll das der darin enthaltene Code ausgeführt wird wenn die Bedingung nicht erfüllt ist.

Schmeiß doch nicht mit solchem Halbwissen um dich. Am Ende merkt sich jemand noch solchen Mist.

lokipoki
26.11.2007, 00:27
Labels und Schleifen sind dasselbe?
In welchem Universum gilt das denn?

Ein Label ist eine Markierung im Code an die du mit einem Befehl springen kannst. Eine Schleife wiederholt den in ihr liegenden Code solange bis du einen Break Befehl gibst.
Du kannst mit einem Label auch so eine Wirkung erzeugen, jedoch ist das doch nicht dasselbe.

Forks sind zudem nichts was einfacher ist als ein Label.
Ich frag mich überhaupt wieso du diese zwei grundverschiedenen Befehle vergleichst. Mit einer Schleife kannst du eine Codepassage wiederholen.
Ein Fork ist nichts weiter als eine Bedingung die verhindern soll das der darin enthaltene Code ausgeführt wird wenn die Bedingung nicht erfüllt ist.

Schmeiß doch nicht mit solchem Halbwissen um dich. Am Ende merkt sich jemand noch solchen Mist.

Das beweist doch das labels besser sind, da man sie vielfältiger einsetzen kann...

Corti
26.11.2007, 11:46
Das beweist doch das labels besser sind, da man sie vielfältiger einsetzen kann...
Du kannst auch Variablen statt Switchen einsetzen und sie mit 0 und 1 belegen.
Muss man halt schaun was sich jeweils anbietet, mir fallen durchaus ein paar Dinge ein bei denen sich loop mehr lohnt, zB. wenn man Codestrukturen kopiert, denn break ist auf den jeweiligen Loop bezogen, wären man die Labels wieder umstellen müsste.

Naja, man kann auch goto() statt while benutzen~ Kommentare sind für Spießer und Fehler die man nicht merkt existieren nicht.

Kelven
26.11.2007, 12:40
Wenn man mehrere Labels in einem Event benutzt, müssen sie unterschiedliche Namen haben. Das Problem hat man bei Schleifen nicht.

Caine Luveno
26.11.2007, 12:53
Ich benutze Loops für Schleifen und Labels eben für gezielte Sprünge im Code falls diese nötig sein sollten.

Bisher waren Labels noch nicht nötig und Schleifen nur für Tastenabfragen wobei ich noch keine nennenswerten Performance Probleme hatte.

Ich habe mal gelesen das verschachtelte Schleifen Probleme machen. Z.B.:



Cycle:
Cycle:

End Cycle:
End Cycle:


Setzt man nun dort, für die äußere Schleife, einen Break Cycle Befehl vor die innere Schleife, gibt es Probleme.



Cycle:
>Break Cycle;
Cycle:

End Cycle:
End Cycle:


Das Problem tauchte bei einem meiner Anfängermenüs mal auf. Wenn ich mich recht entsinne springt in diesem Fall der Maker an das Ende der inneren Schleife und nicht an das der Äußeren (wozu der Break Cycle Befehl ja offensichtlich gehört).

Bei solche nKonstrukten empfehlen sich dann Labels. Aber bei einer einfachen Tastenabfrage halte ich den Performance Unterschied nicht für sonderlich gravierend. Abgesehen davon das man so eine Abfrage als PP Event gstalten könnte womit Schleifen vollkommen wegfallen (ich weiss, ein PP Event ist eigentlich auch nur ne Schleife ^^).

makenshi
27.11.2007, 17:50
Das beweist doch das labels besser sind, da man sie vielfältiger einsetzen kann...

Ich hab nie bestritten das Labels nützlich sind.
Darum ging es doch absolut nicht. Es ging darum das du Elemente
durcheinander schmeißt und gleichsetzt.

@Kelven
Naja, das kann man nicht wirklich als "Problem" bezeichnen.
Das man bei solchen Sprüngen darauf aufpassen muss WOHIN
man springt sollte schon klar sein.

@Thema
Meist soll halt nur ein bestimmter Codeabschnitt wiederholt werden.
Und nicht alles. Für so etwas benutze ich sehr gerne Labels um Schleifen
damit zu bauen. Wobei man auch sagen muss das man schon fortgeschrittene
Sachen umsetzen muss. Sonst wird man denke ich so gut wie nie an diese
Element rantreten müssen.

Kelven
27.11.2007, 18:32
@makenshi
Es ging auch nur um Faulheit. Manchmal kann es passieren, dass man ähnliche Codeblöcke mit Labels hat und beim Kopieren vergisst die Bezeichnungen zu ändern. Unabhängig davon benutze ich eigentlich nur Labels; ich glaube in meinen ganzen Projekten hab ich nicht ein einziges Cycle.