Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03094.jsonl.gz/1195

Im letzten Teil haben wir gelernt, wie wir unserem Spieler eine Reihe von Anweisungen geben können. Anstatt jede Anweisung einzeln aufzuführen, können wir auch Anweisungen wiederholen lassen. Beim Programmieren nennt man solche Wiederholungen Schleifen.
Als erstes Beispiel für eine Schleife möchten wir Folgendes tun:
AUFGABE 2.01: Loop
Der Spieler soll sich solange vorwärts bewegen, bis er nicht mehr weiter kann.
In Dart können wir das wie folgt ausdrücken:
while (canMove()) { move(); }
Mit
while wird etwas solange wiederholt, wie die Bedingung in der Klammer zutrifft. Wenn eine Bedingung zutrifft, dann ist sie
true (=wahr). Sobald der Spieler am Rand ankommt, dann meldet die Sensor-Funktion
canMove() den Wert
false (=falsch) zurück und der Spieler hört auf, sich zu bewegen.
Testen Sie dieses Programm, indem Sie die
while-Schleife in die
start()-Funktion von
scenario2.01 hinein schreiben.
Logische Operatoren
Boolesche Werte können mit Hilfe von logischen Operatoren auch kombiniert oder verändert werden. Die folgende Tabelle zeigt die drei wichtigsten logischen Operatoren in Dart:
|Operator||Beschreibung||Beispiel|

||und||
||Ist erfüllt (true), wenn beide Aussagen erfüllt sind, das heisst wenn der Spieler vor einem Baum und auf einem Stern steht.|

||oder||
||Ist dann erfüllt (true), wenn entweder die eine oder die andere Aussage oder beide erfüllt sind.|

||nicht||
||Ändert einen Ausdruck von true in false und umgekehrt. Diese Aussage wäre also dann erfüllt (true), wenn der Spieler nicht vor einem Baum steht.|
Ein Beispiel in Dart könnte wie folgt aussehen:
if (treeLeft() && onStar()) { // Mache etwas ... }
oder auch kombiniert:
if (treeLeft() && !treeRight()) { // Mache etwas ... }
AUFGABE 2.02: Loop Star
Öffnen Sie das
scenario2.02 und programmieren Sie den Spieler mit einer Schleife so, dass er vorwärts läuft, bis er auf dem Stern steht.
AUFGABE 2.03: Leaving the Tunnel
Unser Spieler ist in einem Tunnel und möchte raus. Schreiben Sie ein Programm für
scenario2.03, bei dem der Spieler aus dem Tunnel hinaus läuft und stehen bleibt, sobald auf einer der beiden Seiten kein Baum mehr steht.
Am Schluss soll er ausserdem einen Stern ablegen.
AUFGABE 2.04: Afraid of Tunnel
Der Spieler hat Angst vor Tunneln. Er soll auf jedem Feld überprüfen, ob es ein Tunneleingang ist (das heisst, ob es auf beiden Seiten Bäumen hat). Ist dies der Fall, so soll er stehen bleiben und in einer Sprechblase sagen, dass er Angst hat.
AUFGABE 2.05: Climbing Up
Der Spieler soll eine beliebig lange Treppe hochlaufen.
Schreiben Sie eine Funktion
oneStepUp(), wo Sie den Spieler eine einzelne Stufe hochsteigen lassen. Überlegen Sie sich, wie Sie erkennen können, ob der Spieler noch eine Stufe steigen muss oder ob er zuoberst angekommen ist.
For-Schleifen
Es gibt neben der
while-Schleife eine weitere, sehr wichtige Art von Schleife: die
for-Schleife.
for (var i = 0; i < 4; i++) { move(); }
Bei diesem Beispiel wird ein Zähler
i verwendet. Der Zähler wird zuerst auf
0 gesetzt. Danach wird bei jedem Schleifendurchgang geprüft, ob
i kleiner ist als
4 und schliesslich wird
i um eins erhöht. Das bedeutet, dass die
move()-Anweisung in dieser Schleife vier mal ausgeführt wird.
Sie werden der
for-Schleife später immer wieder begegnen, auch zum Teil in etwas abgewandelter Form. Für den Moment reicht uns mal das Wissen, dass es sie gibt.
Wie weiter?
→ Im Teil 3 lernen wir mit bedingten Anweisungen eine weitere Art kennen, unsere Programme zu steuern.
Quellen
Planet Cute Bilder stammen von Daniel Cook (Lostgarden.com), veröffentlicht unter CC BY 3.0.
Oleg Yadrov hat die “Planet Cute” Bilder weiterentwickelt und mir zur Verfügung gestellt. Optimiert wurden sie mit dem grossartigen TexturePacker.
Einige Übungen in
Hello Dart sind inspiriert von Kara. Kara wurde entwickelt von Jürg Nievergelt, Werner Hartmann, Raimond Reichert und anderen.