Husi's Schleifen Tutorial

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Husi's Schleifen Tutorial

      Schleifen

      Was sind Schleifen?

      Mit Schleifen kann man Code beliebig oft wiederholen und dabei sogar
      Werte verändern. Man kann zB. angeben, wie oft der Code wiederholt
      werden soll, oder ob er so lange wiederholt werden soll, bis etwas
      bestimmtes eintrifft, bzw. nicht eintrifft.

      Man kann zB. auch eine Nachricht meinetwegen 100 Mal anzeigen lassen und
      auch dort ausgeben, wie oft der Code wiederholt bzw. die Nachrichten
      angezeigt wurden (mehr dazu später). Und das ganze in 2 kleine
      Zeilen!!

      Anwendung



      Es gibt verschiedene Arten von Schleifen.

      Meine Favouriten sind die While- und die For-Schleife ^^

      Repeat - Schleife


      Syntax: repeat(Anzahl){Code/Anweisung}
      Anzahl heißt,wie oft der Code wiederholt werden soll.

      Beispiel:

      GML-Quellcode

      1. repeat(10) {
      2. show_message("wiederholende Nachricht");
      3. }




      While - Schleife
      (Kopfgesteuerte Schleife)

      Syntax: while(Bedingung){Code/Anweisung}

      Bedingung heißt, dass der Code so lange wiederholt wird, so lange diese
      erfüllt wird.
      ___________________
      Bekannt ist die Schleife im „Endlos Modus“. Hier läuft diese
      unendlich bis man sie mit einem Befehl beendet. (Mehr dazu
      später)

      Beispiel:

      GML-Quellcode

      1. i = 0;
      2. while (i < 10) {
      3. show_message(string(i)+". Nachricht");
      4. i += 1;
      5. }





      For - Schleife (Zählerschleife)

      Syntax: for(Initialisierung; Bedingung; Operation) {Code/Anweisung}

      Initialisierung soll heißen, dass man dort eine Variable initialisieren/deklarieren/erstellen
      (gibt’s da viele Schreibweisen :D ) soll.
      ___________________
      Bedingung wie bei der While - Schleife
      ___________________
      Operation bedeutet, dass man hier eine Variable addiert, subtrahiert,
      multipliziert oder dividiert, oder whatever.


      Beispiel:

      GML-Quellcode

      1. for (i = 0; i < 10; i += 1) {
      2. show_message(string(i)+". Nachricht");
      3. }





      Do-Loop - Schleife
      (Fußgesteuerte Schleife)

      Syntax: do {Code/Anweisung} until(Bedingung)

      Wiederholt, bis die Bedingung erfüllt ist.
      Die Schleife wird min. 1 mal ausgeführt, da die Bedinung immer
      am Ende der Schleife geprüft wird.

      Beispiel:

      GML-Quellcode

      1. do {
      2. show_message(string(i)+". Nachricht");
      3. i += 1;
      4. } until (i >= 10)




      Hinweis: Bei Zählervariablen, braucht man diese meistens nicht im nächstem Event. Deshalb macht es mehr Sinn ein var beim erstellen davor zu setzen, um den Arbeitsspeicher weniger zu belasten!


      Mit dem Befehl break; kann man die Schleife abbrechen bzw. da raus gehen.
      Mit dem Befehl continue; kann man wieder zum Anfang zur Schleife ganz
      oben hin springen.


      Außerdem
      müsst ihr aufpassen, dass ihr nicht in eine Endlos-Schleife gerät,
      sonst hängt sich euer Spiel auf.





      Beispiele:
      Der Nutzer soll eine Zahl zwischen 1 und 10 eingeben. Wenn die Eingabe falsch war, dann soll die Eingabe wiederholt werden.

      GML-Quellcode

      1. do {
      2. number = get_integer("Zahl zwischen 1 und 10", 5);
      3. } until (numer >= 1 && number <= 10)


      Es sollen 10 Instanzen von dem Objekt obj_enemy erstellt werden:

      GML-Quellcode

      1. repeat (10) {
      2. instance_create(x, y, obj_enemy);
      3. }





      So.
      Ich hoffe, dass das hier Anfängern helfen kann. Ich weiß, ich hab in
      meiner Vergangenheit viele schlechte Tutorials gemacht. Mit dem hier
      wollte ich das ändern ^^

      Liebe Grüße, Husi
      Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
      Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

      Willst du mit mir auf Discord Chatten/Quatschen?
      Meine Husi's Tutorial Reihe

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von Husi012 ()

    • Mir gefällt das gut :)
      Vielleicht in der for-Schleife noch ergänzen, dass anstelle von i+=1 oft i++ verwendet wird und das es eigentlich gleichbedeutend ist (oder irre ich mich da ?)
      GML lernen geht leicht :)
      1. http://www.gm-d.de/help/ (deutsch)
      2. gm-d.de/wbb/index.php/Thread/2270/ (Einsteiger-Referenz)
      3. docs.yoyogames.com/ (Hilfe auf Englisch von GM:S)
    • Jo stimmt schon. Das war halt eher für Anfänger gedacht, denen ich nicht was mit i++ zumuten wollte ^^
      Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
      Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

      Willst du mit mir auf Discord Chatten/Quatschen?
      Meine Husi's Tutorial Reihe
    • Ah danke. Kannte ich noch gar nicht ^^

      Ich hab gemerkt dass ich die Anführungszeichen von openOffice übernommen hab. Ich komm grad nicht dazu dir um zu ändern. Mach ich dann aber sobald ich kann ^^
      Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
      Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

      Willst du mit mir auf Discord Chatten/Quatschen?
      Meine Husi's Tutorial Reihe
    • Sorm schrieb:

      Ich fände es auch super wenn du noch ein paar praktische Beispiele mit einbauen würdest.
      Einfach um das ganze noch ein wenig von der Documentation abzuheben...
      Außerdem könnte man sich das Ganze so sicher besser vorstellen.

      Sorm


      Hm? Er hat doch praktische Beispiele eingebaut. Die Code-Snippets sollten doch zum Verstehen vollkommen ausreichen, da braucht man ja jetzt kein halbfertiges Spiel hinklatschen.^^
    • Ich überlege mir am besten noch paar Beispiele die ich ganz unten hin mache.

      Mir fällt nur nichts wirklich gutes ein weil viele Funktionen nicht mit Anfängern vertraut sind und die dann eher ein großes Fragezeichen haben.
      Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
      Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

      Willst du mit mir auf Discord Chatten/Quatschen?
      Meine Husi's Tutorial Reihe
    • @helfried19 habe jetzt zwei kleine Beispiele hinzugefügt. Bin aber ziemlich einfallslos. Wenn Ihr noch Beispiele habt, dann her damit :D
      Liebe Grüße Husi :)
      Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
      Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

      Willst du mit mir auf Discord Chatten/Quatschen?
      Meine Husi's Tutorial Reihe
    • Doppelte for-Schleife um zB eine Eierbox voller Objekte zu erstellen.

      GML-Quellcode

      1. for(yy = 0 ; yy < 2 ; yy++){
      2. for(xx = 0 ; xx < 3 ; xx++){
      3. var neuesEi = instance_create(xx*32, yy*32, obj_ei);
      4. //wahlweise auch um ein ds_grid zu befüllen
      5. //ds_grid_set(eierbox, xx, yy, neuesEi);
      6. }
      7. }
      ancient-pixel.com <<< ich freu mich über einen Besuch ;)
    • ditschlerinfrie schrieb:

      Dumme Frage, aber was ist eine Eierbox?
      Der Begriff hat nichts mit dem Code zutun, es soll lediglich ein Beispiel sein. Mit "Eierbox" ist schlicht und weg diese kleine Pappbox gemeint, wo die Eier drin sind. es gibt dort 2 Reihen, bspw. oben 6 Eier, unten 6 Eier oder wie in seinem Beispiel etwas weniger. Damit demonstriert er, wie man anhand einer for-Schleife Instanzen bis zu einem bestimmten Wert erstellt und dann eine Reihe runtergeht, wenn die erste vollständig befüllt wurde.