Übung
image: teaser.webp:50:30 icon: /images/pip/icon-pip.png kind: uebung duration: 2 Doppelstunden languages: [ruby, python, javascript] idea: "Pip mit einem Plan durch die Stollen schicken: Befehle nacheinander, Schleifen, Bedingungen" curriculum: "Sek I: Algorithmisches Problemlösen (Miniwelten, algorithmische Grundstrukturen: Sequenz, Wiederholung, Verzweigung)"

Pip unter Funkelbach: Hinab in die Stollen

Bello ist in einen Schacht gesprungen und verschwunden. Du schreibst Pip einen Plan, Befehl für Befehl, und Pip macht genau, was draufsteht: hinunter in die Stollen, Funkensteine sammeln, an Glibbern vorbei.

Unter Funkelbach liegen alte Stollen. Früher haben die Leute dort Funkensteine gegraben, Steine, die von selbst leuchten. Eines Abends jagt Bello einem Glühwürmchen nach, springt in einen Schacht und ist weg. Pip will ihn holen, aber die Stollen sind eng und finster, und unten hört Pip niemanden mehr.

Der Wichtel hat die alten Karten der Stollen. »Schreib Pip einen Plan«, sagt er, »Schritt für Schritt. Pip macht genau, was draufsteht. Nicht mehr und nicht weniger.«

In den Stollen stehen noch die Lampen der alten Steingräber, seit vielen Jahren dunkel. Jeder Plan bringt Pip zur nächsten. Dort zündet Pip sie mit der eigenen Laterne an, und der Wichtel zeichnet von ihr aus den nächsten Gang in seine Karte. So bleibt auch der Weg zurück hell.

1. Der Eingang

Pip steht oben am Eingang zum ersten Stollen und schaut nach unten. Unter der Karte sind zwei Knöpfe: Vorwärts schickt Pip ein Feld weiter, Links drehen dreht Pip um eine Vierteldrehung nach links. Jeder Klick schreibt eine Zeile in den Plan neben der Karte. Gegen eine Wand läuft Pip nicht, und Rückgängig nimmt die letzte Zeile wieder heraus.

Aufgabe 1Zur ersten LampeEinstieg

Bring Pip mit den Knöpfen zur Lampe und schau zu, wie der Plan mitwächst.

Tipp

Pip schaut nach unten. Wohin schaut Pip nach einer Drehung nach links? Probier es aus: Mit Rückgängig nimmst du jeden Klick wieder heraus.

Aufgabe 1Zur ersten LampeEinstieg

Bring Pip mit den Knöpfen zur Lampe und schau zu, wie der Plan mitwächst.

Tipp

Pip schaut nach unten. Wohin schaut Pip nach einer Drehung nach links? Probier es aus: Mit Rückgängig nimmst du jeden Klick wieder heraus.

Aufgabe 1Zur ersten LampeEinstieg

Bring Pip mit den Knöpfen zur Lampe und schau zu, wie der Plan mitwächst.

Tipp

Pip schaut nach unten. Wohin schaut Pip nach einer Drehung nach links? Probier es aus: Mit Rückgängig nimmst du jeden Klick wieder heraus.

2. Der Schacht

Ab jetzt schreibst du den Plan selbst, statt zu klicken. Ein Plan ist eine Liste von Befehlen, einer pro Zeile. Pip führt sie von oben nach unten aus, einen nach dem anderen. Für den Anfang kennt Pip drei:

Befehl Was Pip macht
move geht ein Feld vorwärts, dorthin, wohin Pip schaut
turn_left dreht sich auf der Stelle um eine Vierteldrehung nach links
say "Bello?" sagt etwas in einer Sprechblase, ohne einen Schritt zu machen
Befehl Was Pip macht
move() geht ein Feld vorwärts, dorthin, wohin Pip schaut
turn_left() dreht sich auf der Stelle um eine Vierteldrehung nach links
say("Bello?") sagt etwas in einer Sprechblase, ohne einen Schritt zu machen

Die Klammern gehören dazu: Ohne sie macht Pip nichts.

Befehl Was Pip macht
move(); geht ein Feld vorwärts, dorthin, wohin Pip schaut
turnLeft(); dreht sich auf der Stelle um eine Vierteldrehung nach links
say("Bello?"); sagt etwas in einer Sprechblase, ohne einen Schritt zu machen

Die Klammern gehören dazu: Ohne sie macht Pip nichts. Das Semikolon am Ende schließt einen Befehl ab.

Bevor Pip losläuft: Auf dieser Karte schaut Pip nach rechts.

move
move
turn_left
move
move()
move()
turn_left()
move()
move();
move();
turnLeft();
move();
Vermutung 2Wo steht Pip?

Pip schaut nach rechts. Wo steht Pip nach dem Plan oben?

Wo steht Pip?

Hier geht es weiter, sobald du deine Antwort oben abgegeben hast.

Pip steht auf Feld 1. Nach zwei Schritten dreht sich Pip nach links, und links ist immer von Pip aus gesehen: Wer nach rechts schaut, hat links den oberen Rand der Karte. Der letzte Schritt geht also nach oben. Eine Drehung nach rechts kennt Pip nicht. Was tut man da?

Aufgabe 3Hinunter zur LampeEinstieg

Unten im Schacht steht die erste alte Lampe. Schreib Pip einen Plan mit move und turn_left, der Pip zur Lampe bringt.

moveturn_leftsay "…"
Tipp

Nach zwei Schritten muss Pip nach rechts abbiegen, aber Pip kann sich nur nach links drehen. Wie oft nach links ergibt einmal rechts?

Aufgabe 3Hinunter zur LampeEinstieg

Unten im Schacht steht die erste alte Lampe. Schreib Pip einen Plan mit move() und turn_left(), der Pip zur Lampe bringt.

move()turn_left()say("…")
Tipp

Nach zwei Schritten muss Pip nach rechts abbiegen, aber Pip kann sich nur nach links drehen. Wie oft nach links ergibt einmal rechts?

Aufgabe 3Hinunter zur LampeEinstieg

Unten im Schacht steht die erste alte Lampe. Schreib Pip einen Plan mit move() und turnLeft(), der Pip zur Lampe bringt.

move()turnLeft()say("…")
Tipp

Nach zwei Schritten muss Pip nach rechts abbiegen, aber Pip kann sich nur nach links drehen. Wie oft nach links ergibt einmal rechts?

Ausprobieren: Schreib vor den ersten Schritt eine Zeile mit say und einem Gruß an Bello und lass den Plan noch einmal laufen. Schau auf den Schrittzähler unter der Karte: Zählt die Sprechblase mit?

Unten im Schacht glitzert etwas. Ein neuer Befehl hebt es auf:

Befehl Was Pip macht
take hebt den Funkenstein auf, auf dem Pip steht
Befehl Was Pip macht
take() hebt den Funkenstein auf, auf dem Pip steht
Befehl Was Pip macht
take(); hebt den Funkenstein auf, auf dem Pip steht
Aufgabe 4Der erste FunkensteinEinstieg

Auf dem Weg nach unten liegt ein Funkenstein. Pip hebt ihn mit take auf, wenn Pip auf seinem Feld steht. Bring Pip mit dem Stein zur Lampe.

moveturn_lefttakesay "…"
Tipp

Erst auf das Feld des Steins gehen, dann take. Steht Pip daneben, greift Pip ins Leere.

Aufgabe 4Der erste FunkensteinEinstieg

Auf dem Weg nach unten liegt ein Funkenstein. Pip hebt ihn mit take() auf, wenn Pip auf seinem Feld steht. Bring Pip mit dem Stein zur Lampe.

move()turn_left()take()say("…")
Tipp

Erst auf das Feld des Steins gehen, dann take(). Steht Pip daneben, greift Pip ins Leere.

Aufgabe 4Der erste FunkensteinEinstieg

Auf dem Weg nach unten liegt ein Funkenstein. Pip hebt ihn mit take() auf, wenn Pip auf seinem Feld steht. Bring Pip mit dem Stein zur Lampe.

move()turnLeft()take()say("…")
Tipp

Erst auf das Feld des Steins gehen, dann take(). Steht Pip daneben, greift Pip ins Leere.

Hier geht es weiter, sobald du deine Antwort oben abgegeben hast.

»Ein Funkenstein«, sagt der Wichtel. »Die halten deine Laterne am Brennen. Wo einer liegt, liegen mehr. Und wo Steine liegen, ist Bello nicht weit: Der buddelt für sein Leben gern.«

3. Funkensteine

Am Fuß des Schachts geht es in die alten Gänge. Überall liegen Funkensteine, und Pip soll keinen liegen lassen. Liegt auf einem Feld kein Stein, greift Pip ins Leere, und der Plan ist zu Ende: Pip geht nur weiter, wenn alles geklappt hat. Dasselbe gilt für eine Wand.

Aufgabe 5Drei SteineEinstieg

Drei Funkensteine liegen im Stollen. Sammle alle drei ein und bring Pip zur Lampe.

moveturn_lefttakesay "…"
Tipp

Geh den Weg auf der Karte mit dem Finger ab und schreib für jedes Feld auf, was Pip dort tut. Am Ende des Stollens geht es nicht weiter: Pip biegt vorher ab.

Aufgabe 5Drei SteineEinstieg

Drei Funkensteine liegen im Stollen. Sammle alle drei ein und bring Pip zur Lampe.

move()turn_left()take()say("…")
Tipp

Geh den Weg auf der Karte mit dem Finger ab und schreib für jedes Feld auf, was Pip dort tut. Am Ende des Stollens geht es nicht weiter: Pip biegt vorher ab.

Aufgabe 5Drei SteineEinstieg

Drei Funkensteine liegen im Stollen. Sammle alle drei ein und bring Pip zur Lampe.

move()turnLeft()take()say("…")
Tipp

Geh den Weg auf der Karte mit dem Finger ab und schreib für jedes Feld auf, was Pip dort tut. Am Ende des Stollens geht es nicht weiter: Pip biegt vorher ab.

Aufgabe 6Der lange StollenÜbung

Im langen Stollen liegen elf Funkensteine, einer auf jedem Feld bis zur Lampe. Sammle alle ein.

moveturn_lefttakesay "…"
Tipp

Schreib den Plan Stück für Stück und probier ihn mit Ausführen aus, sobald ein Stück fertig ist. Läuft Pip gegen eine Wand, zeigt die Wiedergabe, in welcher Zeile.

Aufgabe 6Der lange StollenÜbung

Im langen Stollen liegen elf Funkensteine, einer auf jedem Feld bis zur Lampe. Sammle alle ein.

move()turn_left()take()say("…")
Tipp

Schreib den Plan Stück für Stück und probier ihn mit Ausführen aus, sobald ein Stück fertig ist. Läuft Pip gegen eine Wand, zeigt die Wiedergabe, in welcher Zeile.

Aufgabe 6Der lange StollenÜbung

Im langen Stollen liegen elf Funkensteine, einer auf jedem Feld bis zur Lampe. Sammle alle ein.

move()turnLeft()take()say("…")
Tipp

Schreib den Plan Stück für Stück und probier ihn mit Ausführen aus, sobald ein Stück fertig ist. Läuft Pip gegen eine Wand, zeigt die Wiedergabe, in welcher Zeile.

Hier geht es weiter, sobald du deine Antwort oben abgegeben hast.

»Elf Steine«, sagt der Wichtel und zählt nach. »Und elfmal hast du dasselbe geschrieben: einen Schritt, einen Griff. Das geht kürzer. Komm, ich zeig dir die Wendeltreppe.«

Wer noch Zeit hat: Der Wichtel hat sich verschrieben.

Aufgabe 7FehlersucheExtra

Der Wichtel hat einen Plan geschrieben, aber Pip läuft damit gegen eine Wand. Lass ihn mit Ausführen laufen, such die falsche Stelle und repariere sie, sodass Pip alle Steine einsammelt und zur Lampe kommt.

moveturn_lefttakesay "…"
Tipp

Die Rückmeldung nennt die Zeile, in der Pip gegen die Wand läuft. Der Fehler steht kurz davor: In welche Richtung schaut Pip dort, und in welche sollte Pip schauen?

Aufgabe 7FehlersucheExtra

Der Wichtel hat einen Plan geschrieben, aber Pip läuft damit gegen eine Wand. Lass ihn mit Ausführen laufen, such die falsche Stelle und repariere sie, sodass Pip alle Steine einsammelt und zur Lampe kommt.

move()turn_left()take()say("…")
Tipp

Die Rückmeldung nennt die Zeile, in der Pip gegen die Wand läuft. Der Fehler steht kurz davor: In welche Richtung schaut Pip dort, und in welche sollte Pip schauen?

Aufgabe 7FehlersucheExtra

Der Wichtel hat einen Plan geschrieben, aber Pip läuft damit gegen eine Wand. Lass ihn mit Ausführen laufen, such die falsche Stelle und repariere sie, sodass Pip alle Steine einsammelt und zur Lampe kommt.

move()turnLeft()take()say("…")
Tipp

Die Rückmeldung nennt die Zeile, in der Pip gegen die Wand läuft. Der Fehler steht kurz davor: In welche Richtung schaut Pip dort, und in welche sollte Pip schauen?

4. Die Wendeltreppe

Was sich wiederholt, schreibt man einmal und lässt es wiederholen. Eine Schleife macht das:

4.times do
  move
  turn_left
end

Was zwischen do und end steht, macht Pip viermal hintereinander. Die Befehle darin sind eingerückt, damit man sieht, was zur Schleife gehört.

for i in range(4):
    move()
    turn_left()

Was unter for i in range(4): eingerückt steht, macht Pip viermal hintereinander. Der Doppelpunkt und die Einrückung gehören dazu: Daran sieht Python, was zur Schleife gehört.

for (let i = 0; i < 4; i++) {
  move();
  turnLeft();
}

Was zwischen den geschweiften Klammern steht, macht Pip viermal hintereinander. Die Zählvariable i fängt bei 0 an, und nach jedem Durchlauf zählt i++ eins weiter, solange i < 4 gilt: 0, 1, 2, 3.

Aufgabe 8Vier WändeEinstieg

In diesem Raum liegt an jeder Wand ein Funkenstein, an jeder an derselben Stelle. Pip macht an jeder Wand dasselbe: Schreib es einmal in die Schleife, und Pip wiederholt es viermal.

moveturn_lefttakesay "…"
Tipp

Schau dir die erste Wand an: Wie viele Schritte bis zum Stein, wie viele danach bis zur Ecke? An der Ecke dreht sich Pip nach links.

Aufgabe 8Vier WändeEinstieg

In diesem Raum liegt an jeder Wand ein Funkenstein, an jeder an derselben Stelle. Pip macht an jeder Wand dasselbe: Schreib es einmal in die Schleife, und Pip wiederholt es viermal.

move()turn_left()take()say("…")
Tipp

Schau dir die erste Wand an: Wie viele Schritte bis zum Stein, wie viele danach bis zur Ecke? An der Ecke dreht sich Pip nach links.

Aufgabe 8Vier WändeEinstieg

In diesem Raum liegt an jeder Wand ein Funkenstein, an jeder an derselben Stelle. Pip macht an jeder Wand dasselbe: Schreib es einmal in die Schleife, und Pip wiederholt es viermal.

move()turnLeft()take()say("…")
Tipp

Schau dir die erste Wand an: Wie viele Schritte bis zum Stein, wie viele danach bis zur Ecke? An der Ecke dreht sich Pip nach links.

Aufgabe 9Acht in einer ReiheÜbung

Acht Steine in einer Reihe. Sammle sie mit einer Schleife ein, nicht mit sechzehn Zeilen.

moveturn_lefttakesay "…"
Tipp

Was wiederholt sich? Ein Schritt und ein Griff, achtmal.

Aufgabe 9Acht in einer ReiheÜbung

Acht Steine in einer Reihe. Sammle sie mit einer Schleife ein, nicht mit sechzehn Zeilen.

move()turn_left()take()say("…")
Tipp

Was wiederholt sich? Ein Schritt und ein Griff, achtmal.

Aufgabe 9Acht in einer ReiheÜbung

Acht Steine in einer Reihe. Sammle sie mit einer Schleife ein, nicht mit sechzehn Zeilen.

move()turnLeft()take()say("…")
Tipp

Was wiederholt sich? Ein Schritt und ein Griff, achtmal.

Bei der Wendeltreppe wird jedes Stück ein Feld länger. Dafür zählt die Schleife mit:

(1..3).each do |side|
  say side
end

side ist die Zählvariable: im ersten Durchlauf 1, dann 2, dann 3. Pip sagt der Reihe nach 1, 2, 3. Und side.times do … end wiederholt so oft, wie side gerade groß ist.

for side in range(1, 4):
    say(side)

side ist die Zählvariable: im ersten Durchlauf 1, dann 2, dann 3. Die 4 ist die erste Zahl, die nicht mehr dran ist. Pip sagt der Reihe nach 1, 2, 3. Und for step in range(side): wiederholt so oft, wie side gerade groß ist.

for (let side = 1; side <= 3; side++) {
  say(side);
}

side ist die Zählvariable: im ersten Durchlauf 1, dann 2, dann 3. Pip sagt der Reihe nach 1, 2, 3. Und eine Schleife mit step < side darin wiederholt so oft, wie side gerade groß ist.

Aufgabe 10Die WendeltreppeKnobelei

Die Wendeltreppe windet sich von der Mitte nach außen: erst ein Feld, dann zwei, dann drei, bis sechs, und nach jedem Stück eine Linksdrehung. Auf jedem Feld liegt ein Stein.

moveturn_lefttakesay "…"
Tipp

Als lange Liste wären es über vierzig Zeilen. Die Stücke unterscheiden sich nur in der Länge: 1, 2, 3, 4, 5, 6.

Nächster Tipp

Eine Schleife mit Zählvariable: (1..6).each do |side| … end. Darin wiederholt side.times do … end so oft, wie das Stück gerade lang ist.

Aufgabe 10Die WendeltreppeKnobelei

Die Wendeltreppe windet sich von der Mitte nach außen: erst ein Feld, dann zwei, dann drei, bis sechs, und nach jedem Stück eine Linksdrehung. Auf jedem Feld liegt ein Stein.

move()turn_left()take()say("…")
Tipp

Als lange Liste wären es über vierzig Zeilen. Die Stücke unterscheiden sich nur in der Länge: 1, 2, 3, 4, 5, 6.

Nächster Tipp

Eine Schleife mit Zählvariable: for side in range(1, 7):. Darin wiederholt for step in range(side): so oft, wie das Stück gerade lang ist.

Aufgabe 10Die WendeltreppeKnobelei

Die Wendeltreppe windet sich von der Mitte nach außen: erst ein Feld, dann zwei, dann drei, bis sechs, und nach jedem Stück eine Linksdrehung. Auf jedem Feld liegt ein Stein.

move()turnLeft()take()say("…")
Tipp

Als lange Liste wären es über vierzig Zeilen. Die Stücke unterscheiden sich nur in der Länge: 1, 2, 3, 4, 5, 6.

Nächster Tipp

Eine Schleife mit Zählvariable: for (let side = 1; side <= 6; side++) { … }. Darin wiederholt for (let step = 0; step < side; step++) so oft, wie das Stück gerade lang ist.

Hier geht es weiter, sobald du deine Antwort oben abgegeben hast.

Unten an der Treppe hört Pip etwas. Ganz leise, von weit weg: »Wuff!« Der Wichtel spitzt die Ohren. »Von unten«, sagt er. »Durch die Pilzwiese.«
Aufgabe 11Die Wendeltreppe in sieben ZeilenExtra

Dieselbe Wendeltreppe, aber der Plan hat höchstens sieben Zeilen. Kommentare und leere Zeilen zählen nicht mit.

moveturn_lefttakesay "…"
Tipp

Zwei Schleifen ineinander: Die äußere zählt die Länge des Stücks mit, die innere läuft so oft, wie das Stück lang ist.

Aufgabe 11Die Wendeltreppe in sieben ZeilenExtra

Dieselbe Wendeltreppe, aber der Plan hat höchstens sieben Zeilen. Kommentare und leere Zeilen zählen nicht mit.

move()turn_left()take()say("…")
Tipp

Zwei Schleifen ineinander: Die äußere zählt die Länge des Stücks mit, die innere läuft so oft, wie das Stück lang ist.

Aufgabe 11Die Wendeltreppe in sieben ZeilenExtra

Dieselbe Wendeltreppe, aber der Plan hat höchstens sieben Zeilen. Kommentare und leere Zeilen zählen nicht mit.

move()turnLeft()take()say("…")
Tipp

Zwei Schleifen ineinander: Die äußere zählt die Länge des Stücks mit, die innere läuft so oft, wie das Stück lang ist.

5. Die Pilzwiese

Unter der Treppe öffnet sich eine Höhle, in der Pilze leuchten. Wer hier nichts übersehen will, geht die Wiese in Schlangenlinien ab: eine Reihe hin, die nächste zurück.

Aufgabe 12Reihe für ReiheÜbung

Auf der Pilzwiese liegt auf jedem Feld ein Funkenstein. Geh sie in Schlangenlinien ab, Reihe für Reihe, und sammle alle ein. Die Lampe steht am Ende der letzten Reihe.

moveturn_lefttakesay "…"
Tipp

Zwei Reihen hin und zurück sind ein Stück, das sich wiederholt: hin, links hoch, zurück, rechts hoch. Rechts ist dreimal links. Und sobald Pip die Lampe erreicht, ist der Plan zu Ende, auch mitten in der Schleife.

Aufgabe 12Reihe für ReiheÜbung

Auf der Pilzwiese liegt auf jedem Feld ein Funkenstein. Geh sie in Schlangenlinien ab, Reihe für Reihe, und sammle alle ein. Die Lampe steht am Ende der letzten Reihe.

move()turn_left()take()say("…")
Tipp

Zwei Reihen hin und zurück sind ein Stück, das sich wiederholt: hin, links hoch, zurück, rechts hoch. Rechts ist dreimal links. Und sobald Pip die Lampe erreicht, ist der Plan zu Ende, auch mitten in der Schleife.

Aufgabe 12Reihe für ReiheÜbung

Auf der Pilzwiese liegt auf jedem Feld ein Funkenstein. Geh sie in Schlangenlinien ab, Reihe für Reihe, und sammle alle ein. Die Lampe steht am Ende der letzten Reihe.

move()turnLeft()take()say("…")
Tipp

Zwei Reihen hin und zurück sind ein Stück, das sich wiederholt: hin, links hoch, zurück, rechts hoch. Rechts ist dreimal links. Und sobald Pip die Lampe erreicht, ist der Plan zu Ende, auch mitten in der Schleife.

Auf der echten Wiese liegen die Steine nicht überall, und jede Karte des Wichtels zeigt sie woanders. Ein Plan, der nur auf eine Karte passt, greift auf der nächsten ins Leere. Pip kann nachsehen, bevor Pip zugreift:

take if on_stone?

on_stone? ist eine Frage an die Karte: Liegt hier ein Stein? Die Antwort ist true oder false, und nur bei true macht Pip take. Das Fragezeichen gehört zum Namen; in Ruby enden Fragen so.

if on_stone():
    take()

on_stone() ist eine Frage an die Karte: Liegt hier ein Stein? Die Antwort ist True oder False, und nur bei True macht Pip, was unter dem if eingerückt steht.

if (onStone()) {
  take();
}

onStone() ist eine Frage an die Karte: Liegt hier ein Stein? Die Antwort ist true oder false, und nur bei true macht Pip, was in den geschweiften Klammern steht.

Aufgabe 13Mal hier, mal daKnobelei

Auf der Wiese liegen die Steine nicht mehr überall, und der Wichtel hat drei Karten, auf jeder liegen sie woanders. Ein Plan für alle drei: Pip prüft mit on_stone?, ob auf dem Feld ein Stein liegt, und hebt ihn nur dann auf.

moveturn_lefttakeon_stone?say "…"
Tipp

Dein Plan von »Reihe für Reihe« passt fast: Wo dort take steht, nimmt Pip jetzt nur auf, wenn on_stone? wahr ist.

Aufgabe 13Mal hier, mal daKnobelei

Auf der Wiese liegen die Steine nicht mehr überall, und der Wichtel hat drei Karten, auf jeder liegen sie woanders. Ein Plan für alle drei: Pip prüft mit on_stone(), ob auf dem Feld ein Stein liegt, und hebt ihn nur dann auf.

move()turn_left()take()on_stone()say("…")
Tipp

Dein Plan von »Reihe für Reihe« passt fast: Wo dort take() steht, nimmt Pip jetzt nur auf, wenn on_stone() wahr ist.

Aufgabe 13Mal hier, mal daKnobelei

Auf der Wiese liegen die Steine nicht mehr überall, und der Wichtel hat drei Karten, auf jeder liegen sie woanders. Ein Plan für alle drei: Pip prüft mit onStone(), ob auf dem Feld ein Stein liegt, und hebt ihn nur dann auf.

move()turnLeft()take()onStone()say("…")
Tipp

Dein Plan von »Reihe für Reihe« passt fast: Wo dort take() steht, nimmt Pip jetzt nur auf, wenn onStone() wahr ist.

6. Glibber!

Hinter der Wiese wird es feucht. Etwas Blaues wabert quer durch den Stollen, hin und her, ein Feld pro Schritt, und kehrt an der Wand um: ein Glibber. Wen er erwischt, der klebt fest. Pip kann warten, bis er vorbei ist; Warten ist auch ein Schritt, nur ohne Weg:

Befehl Was Pip macht
wait bleibt einen Schritt lang stehen
glibber_ahead? fragt: Ist auf dem nächsten Feld ein Glibber, oder kommt gleich einer hin?
Befehl Was Pip macht
wait() bleibt einen Schritt lang stehen
glibber_ahead() fragt: Ist auf dem nächsten Feld ein Glibber, oder kommt gleich einer hin?
Befehl Was Pip macht
wait(); bleibt einen Schritt lang stehen
glibberAhead() fragt: Ist auf dem nächsten Feld ein Glibber, oder kommt gleich einer hin?
Aufgabe 14Der GlibberÜbung

Ein Glibber wabert quer durch den Stollen, auf und ab, ein Feld pro Schritt. Mit wait bleibt Pip einen Schritt lang stehen. Bring Pip zur Lampe, ohne dass der Glibber Pip erwischt.

moveturn_leftwaitsay "…"
Tipp

Lass Pip erst einfach geradeaus laufen und schau in der Wiedergabe, wo sich beide treffen. Ein oder zwei wait an der richtigen Stelle, und der Glibber ist schon vorbei.

Aufgabe 14Der GlibberÜbung

Ein Glibber wabert quer durch den Stollen, auf und ab, ein Feld pro Schritt. Mit wait() bleibt Pip einen Schritt lang stehen. Bring Pip zur Lampe, ohne dass der Glibber Pip erwischt.

move()turn_left()wait()say("…")
Tipp

Lass Pip erst einfach geradeaus laufen und schau in der Wiedergabe, wo sich beide treffen. Ein oder zwei wait() an der richtigen Stelle, und der Glibber ist schon vorbei.

Aufgabe 14Der GlibberÜbung

Ein Glibber wabert quer durch den Stollen, auf und ab, ein Feld pro Schritt. Mit wait() bleibt Pip einen Schritt lang stehen. Bring Pip zur Lampe, ohne dass der Glibber Pip erwischt.

move()turnLeft()wait()say("…")
Tipp

Lass Pip erst einfach geradeaus laufen und schau in der Wiedergabe, wo sich beide treffen. Ein oder zwei wait() an der richtigen Stelle, und der Glibber ist schon vorbei.

Auf einer Karte kann man abzählen, wann der Glibber wo ist. Auf drei Karten mit verschiedenen Anfängen nicht mehr. Dann entscheidet Pip bei jedem Schritt neu, mit einem if und einem else für den anderen Fall:

if glibber_ahead?
  say "Iiih!"
else
  say "Frei!"
end
if glibber_ahead():
    say("Iiih!")
else:
    say("Frei!")
if (glibberAhead()) {
  say("Iiih!");
} else {
  say("Frei!");
}
Aufgabe 15Glibber überallKnobelei

Zwei Glibber, und auf den drei Karten des Wichtels fangen sie an verschiedenen Stellen an. Abzählen hilft nicht mehr. glibber_ahead? sagt, ob auf dem nächsten Feld ein Glibber ist oder gleich einer hinkommt: Dann wartet Pip, sonst geht Pip weiter.

moveturn_leftwaitglibber_ahead?say "…"
Tipp

In jedem Durchlauf der Schleife entscheidet Pip neu: warten oder gehen. Wie oft die Schleife läuft, ist egal, wenn es oft genug ist: An der Lampe ist Schluss.

Nächster Tipp

if glibber_ahead? … else … end in einer Schleife.

Aufgabe 15Glibber überallKnobelei

Zwei Glibber, und auf den drei Karten des Wichtels fangen sie an verschiedenen Stellen an. Abzählen hilft nicht mehr. glibber_ahead() sagt, ob auf dem nächsten Feld ein Glibber ist oder gleich einer hinkommt: Dann wartet Pip, sonst geht Pip weiter.

move()turn_left()wait()glibber_ahead()say("…")
Tipp

In jedem Durchlauf der Schleife entscheidet Pip neu: warten oder gehen. Wie oft die Schleife läuft, ist egal, wenn es oft genug ist: An der Lampe ist Schluss.

Nächster Tipp

if glibber_ahead(): und else: in einer Schleife.

Aufgabe 15Glibber überallKnobelei

Zwei Glibber, und auf den drei Karten des Wichtels fangen sie an verschiedenen Stellen an. Abzählen hilft nicht mehr. glibberAhead() sagt, ob auf dem nächsten Feld ein Glibber ist oder gleich einer hinkommt: Dann wartet Pip, sonst geht Pip weiter.

move()turnLeft()wait()glibberAhead()say("…")
Tipp

In jedem Durchlauf der Schleife entscheidet Pip neu: warten oder gehen. Wie oft die Schleife läuft, ist egal, wenn es oft genug ist: An der Lampe ist Schluss.

Nächster Tipp

if (glibberAhead()) { … } else { … } in einer Schleife.

Hier geht es weiter, sobald du deine Antwort oben abgegeben hast.

Hinter dem letzten Glibber leuchtet die nächste Lampe auf, und daneben, im Staub: ein Pfotenabdruck. Noch einer. Eine ganze Spur, die tiefer in die Stollen führt. »Bello«, sagt Pip. Der Wichtel nickt. »Morgen. Für heute hast du genug Glibber gesehen.«