Aufgabenblock — AFB III
Begründen statt nur ausführen: Fehler erklären, Lösungen vergleichen und beurteilen. Formuliere deine Antwort erst selbst in ganzen Sätzen, bevor du die Musterlösung aufklappst.
Erkläre an einem Beispiel, warum zwei Skripte mit genau denselben Blöcken verschiedene Wege zeichnen können.
Hinweis: Nimm einmal „gehe 50er Schritt“ und „drehe dich ↻ um 90 Grad“.
Musterlösung anzeigen (zählt als erledigt)
Musterlösung: Blöcke laufen von oben nach unten. Bei „gehe 50, drehe ↻ 90, gehe 50“ entsteht von (0|0) aus eine Ecke: erst nach rechts, dann nach unten. Bei „drehe ↻ 90, gehe 50, gehe 50“ läuft die Figur 100 Schritte gerade nach unten. Gleiche Blöcke, andere Reihenfolge — anderes Ergebnis.
Vergleiche „gehe … er Schritt“, „gehe zu x: y:“ und „gleite … zu x: y:“. Nenne für jeden Block eine Situation, in der er am besten passt.
Hinweis: Achte auf absolut/relativ und auf die Zeit.
Musterlösung anzeigen (zählt als erledigt)
Musterlösung: „gehe … er Schritt“ bewegt relativ in Blickrichtung — gut für Steuerungen und Muster mit dem Malstift. „gehe zu x: y:“ springt sofort an feste Koordinaten — gut für Startpositionen. „gleite“ fährt in einer festen Zeit zu festen Koordinaten — gut für sichtbare Animationen, z. B. eine Figur, die ins Bild läuft.
In einer Endlosschleife steht starte Klang Trommel und danach warte 0.1 Sekunden. Der Trommelklang ist 1 Sekunde lang. Erkläre, warum man nur ein kurzes Anschlagen hört, und schlage eine Korrektur vor.
Hinweis: Was macht „starte Klang“, wenn der Klang schon läuft?
Musterlösung anzeigen (zählt als erledigt)
Musterlösung: „starte Klang“ wartet nicht. Nach 0,1 s ist die Schleife wieder da und startet den Klang von vorn — er kommt nie über die ersten 0,1 s hinaus. Mit „spiele Klang [Trommel] ganz“ wartet die Schleife, bis der Klang zu Ende ist.
Begründe, warum Spiele für die Steuerung meist eine Endlosschleife mit „falls Taste … gedrückt?“ verwenden statt „Wenn Taste … gedrückt wird“.
Hinweis: Halte eine Taste gedrückt und beobachte die Figur.
Musterlösung anzeigen (zählt als erledigt)
Musterlösung: Der Kopfblock „Wenn Taste … gedrückt wird“ reagiert wie beim Tippen: einmal sofort, dann nach einer Pause wiederholt — die Figur ruckelt. Eine Endlosschleife prüft etwa 30-mal pro Sekunde, ob die Taste gerade gedrückt ist, und bewegt die Figur jedes Mal ein Stück. Die Bewegung ist gleichmäßig, und mehrere Tasten gleichzeitig (schräg laufen) funktionieren.
Unter Wenn angeklickt wird steht nur „falls wird [Gegner] berührt? dann stoppe alles“. Erläutere, warum das Spiel nie stoppt, obwohl der Gegner den Spieler oft berührt.
Hinweis: Wann wird die Bedingung geprüft?
Musterlösung anzeigen (zählt als erledigt)
Musterlösung: Der falls-Block läuft genau einmal, direkt nach dem Klick auf ⚑. In diesem Augenblick berührt der Gegner den Spieler nicht, also passiert nichts — und danach wird nie wieder geprüft. Der falls-Block muss in „wiederhole fortlaufend“ stehen, damit ständig geprüft wird.
Eine Figur läuft in 10er-Schritten von x = 0 nach rechts. Im Skript steht „falls x-Position = 55 dann sage Mitte“. Erkläre, warum die Figur nie „Mitte“ sagt, und entwickle eine bessere Bedingung.
Hinweis: Welche x-Werte nimmt die Figur an?
Musterlösung anzeigen (zählt als erledigt)
Musterlösung: Die Figur steht nur bei 0, 10, 20, …, 50, 60 — die 55 wird übersprungen, die Bedingung ist nie wahr. Besser: „x-Position > 50“ (einmalig, z. B. mit einer Variable merken) oder ein Bereich „x-Position > 50 und x-Position < 60“. Grundregel: Bei Positionen mit > und < vergleichen.
Jeder Luftballon-Klon soll unterschiedlich schnell steigen. Timo legt die Variable Tempo „für alle Figuren“ an. Beurteile seine Entscheidung.
Hinweis: Wie viele Werte von Tempo gibt es dann gleichzeitig?
Musterlösung anzeigen (zählt als erledigt)
Musterlösung: Eine Variable „für alle Figuren“ hat nur einen einzigen Wert. Setzt jeder neue Klon Tempo auf eine Zufallszahl, überschreibt er den Wert für alle — am Ende steigen alle gleich schnell. Timos Entscheidung ist falsch: Tempo muss „nur für diese Figur“ angelegt werden, dann hat jeder Klon seinen eigenen Wert.
In einem Theaterstück sind alle Figuren über Wartezeiten abgestimmt. Nun soll ein Satz länger werden. Beurteile, ob Nachrichten die bessere Lösung wären.
Hinweis: Wie viele Stellen müsste man bei Wartezeiten ändern?
Musterlösung anzeigen (zählt als erledigt)
Musterlösung: Mit Wartezeiten müsste man jede spätere Pause um dieselbe Zeit verlängern — viele Stellen, leicht vergisst man eine. Mit „sende … an alle und warte“ meldet die sprechende Figur selbst, wann sie fertig ist; die Änderung betrifft nur einen Block. Für längere Abläufe sind Nachrichten die bessere Lösung, feste Zeiten reichen nur für kurze, unveränderliche Stellen.
Mila hat drei eigene Blöcke „Quadrat klein“, „Quadrat mittel“, „Quadrat groß“. Nimm Stellung: Sollte sie daraus einen Block mit Eingabe machen?
Hinweis: Was müsste sie tun, wenn die Quadrate gefüllt werden sollen?
Musterlösung anzeigen (zählt als erledigt)
Musterlösung: Die drei Blöcke unterscheiden sich nur in einer Zahl. Jede Änderung (z. B. Farbe, Füllen) müsste dreimal gemacht werden, und eine vierte Größe braucht einen weiteren Block. Mit „definiere Quadrat (seite)“ gibt es nur eine Definition, und jede Größe ist möglich. Ich würde ihr den Umbau klar empfehlen — lesbar bleibt es trotzdem: Quadrat (20), Quadrat (80).
In Paulas Spiel erzeugt eine Figur jede halbe Sekunde einen Gegner-Klon, der über die Bühne fliegt. Nach etwa zweieinhalb Minuten erscheinen keine neuen Gegner mehr. Erkläre das und entwickle eine Lösung.
Hinweis: Wie viele Klone entstehen in zweieinhalb Minuten?
Musterlösung anzeigen (zählt als erledigt)
Musterlösung: In 150 Sekunden entstehen 2 · 150 = 300 Klone. Werden sie nie gelöscht, ist die Grenze von 300 Klonen erreicht — Scratch erzeugt keine weiteren. Lösung: Jeder Klon prüft in seiner Schleife, ob er den Rand erreicht hat (oder getroffen wurde), und führt dann „lösche diesen Klon“ aus.
