Nov 282012
 

Stunde #1-14: Einführung der Schleifen

In den letzten Lektionen haben wir bedingte Anweisungen behandelt wie zum Beispiel das If Statement. Diese führen eine entsprechende Aktion aus, je nachdem, ob eine Bedingung erfüllt wird.

Heute werden wir über Schleifen reden, welche meist auch bedingte Anweisungen ausführen.

Aber was sind Schleifen?

Wie der Name es schon sagt, Schleifen enthalten Code, welcher mehrfach ausgeführt wird.

Wann helfen uns Schleifen?

Wenn wir zum Beispiel eine Zeile 100 mal ausgeben wollen, können wir diese 100 mal schreiben oder eben eine Schleife 100 mal durchlaufen lassen.

Loops, also Schleifen, sind sehr praktische Gehilfen. Bei der Entwicklung von Spielen sind diese nicht weg zu denken. In den nächsten Lektionen werden wir sehen, dass Spiele doch recht mechanisch sind. Hinter den tollen Grafiken und wunderbaren Soundeffekten stecken meistens Loops. Man kann es mit dem Herz der Spiele vergleichen, es wird ständig der Inhalt neu berechnet und an die jeweilige Position gesetzt und die Grafik neu gerendert, neu gezeichnet.

Hier mal ein Beispiel einer Spiele Schleife, Game Loop:

In diesem Beispiel einer While Schleife werden die updateGame und die renderGame Methode ausgeführt, solange die Aussage playerAlive == true erfüllt wird. Hier muss der Spieler also am Leben sein.

Die updateGame() Methode kümmert sich um die Physik oder Kollisionen, während sich die renderGame() Methode darum kümmert, den Spieler und die Umgebung immer wieder neu darzustellen.

Der deltaTime Parameter ist die Zeit, in der unser Loop neu ausgeführt wird. Meist sind das in Spielen nur wenige Nanosekunden. Dies werden wir später genauer behandeln, wenn wir wirklich ein Spiel programmieren.

Prozessoren, besonders bei modernen mobilen Geräten, sind vielzählig und die Geschwindigkeit der Ausführung kann stark variieren.  Aber warum sollte das ein Problem sein?

Nehmen wir an, die updateGame() Methode bewegt unseren Spieler um 5 Pixel nach rechts. Was würde also passieren, wenn die Methode nicht in den selben Abständen ausgeführt werden würde? Wenn das Spiel langsamer werden würde und die Methode doppelt solange benötigt, bis sie ausgeführt wird, würde der Spieler sich nur noch mit halbem Tempo bewegen. Das wäre die Katastrophe für jedes Spiel.

Was machen die meisten Entwickler, um genau das zu verhindern? Sie bewegen den Spieler nicht einfach 5 Pixel, sondern bewegen ihn 5 Pixel multipliziert mit der Zeit, die seit dem letzten Ausführen der Methode vergangen ist, welche auch als deltaTime angegeben werden kann. Hierdurch kann der Prozessor eines Gerätes das Spiel zwar verlangsamen, der Spieler bewegt sich aber immer mit der selben Geschwindigkeit.

Lasst uns nun zu unserer ersten Schleife kommen.

Stunde #1-15: die While Schleife

Weiter oben haben wir schon eine While Schleife gesehen, lasst uns nun diese etwas genauer besprechen.

Die While Schleife wird immer solange ausgeführt, wie die Aussage zutrifft.

 

Hier würde die Schleife, so schnell wie es der Rechner kann und solange wie die Erde sich dreht, immer wieder den Satz: „Die Erde dreht sich immer noch.“ anzeigen. Es würde also eine Weile dauern, bis diese Schleife fertig ist.

Normalerweise wollen wir nicht, dass eine Schleife für immer läuft. Wir müssen also die Schleife beenden, aber wie?

Es ist relativ einfach, wenn die Schleife zu unserer Zufriedenheit ausgeführt wird, ändern wir einfach unsere Aussage, danach wird die Schleife beendet.

Dieser Code sollte für uns inzwischen relativ einfach zu verstehen sein. Aber lasst es uns nochmal kurz durchgehen:

In der Main Klasse:

1. Wir haben eine Boolean Variable namens dieErdeDrehtSich erstellt und diese mit dem Wert true initialisiert.
2. Wir haben einen Counter erstellt, der bei 0 anfängt zu zählen.

Wir haben die While Schleife mit einer Aussage erstellt:

1. Wir lassen „Die Erde dreht sich immer noch.“ anzeigen.
2. Wir lassen uns den Counter anzeigen.
3. Wir addieren 1 zum Counter.

Zum Schluss haben wir noch ein If Statement erstellt.

Hier gewartet bis der Counter bei 10 ist und unsere Aussage wird = false gesetzt.

Das If Statement muss innerhalb der While Schleife aufgerufen werden. Es wird erst ausgeführt, wenn der Counter 10 erreicht hat. Stände es außerhalb der While Schleife, würde es nie aufgerufen und somit auch nie ausgeführt werden.

Ein weiterer einfacher Weg, eine Schleife zu beenden, ist break. Auf diesem Weg kann sich die Welt weiter drehen und wir können die Schleife beenden.

So, und mit diesem Wissen werden wir unser nächstes kleines Programm erstellen.

Das Ergebnis:

In der nächsten Lektion werden wir genauer darauf eingehen. Es sieht zwar sehr komplex aus, ist aber geradlinig und relativ einfach zu verstehen.

Falls ihr Fragen habt, immer raus damit, ich helfe euch sehr gerne. Hinterlasst bitte einfach einen Kommentar.

Teilt diese Seite mit euren Freunden und besucht uns mal auf Facebook und auf Google+, das würde dieser Seite wirklich weiterhelfen, Danke sehr. Auch ein Klick auf die Werbung hilft dabei, diese Seite am Laufen zu halten.

Quelle: Original Anleitung auf englisch von Kilobolt Studios

Lektion 7 – Mehr Kontrolle Lektion 9 – noch mehr Loops