8.4: Objekte sammeln und den Punktestand verwalten
Autoren: | |
Publikation: | 29.9.2016 |
Lernstufe: | 3 |
Übersicht: | Die Schüler vervollständigen ihr Programm: Man kann nun Objekte einsammeln (neue Figuren). Außerdem wird ein Punktestand eingeführt. Die Schüler lernen bedingte Anweisungen zu programmieren und "Sensoren" zu verwenden. |
Angestrebte Kenntnisse: |
|
Wortschatz: | Schleife, Test, Sensor, Zufallszahl |
Dauer: | ca. zwei Stunden |
Material: |
Für die Klasse:
|
Herkunft: | La main à la pâte, Paris |
Pädagogische Anmerkungen
- Es handelt sich hier um die zentrale Phase dieser Unterrichtseinheit. Damit die verschiedenen Objekte (Hindernisse, Wasser & Nahrung) das machen, was sie sollen, müssen die Schüler viele neue Begriffe kennenlernen und einsetzen: Tests, Variablen, Sensoren, Operatoren.
- Um nicht alle Begriffe auf einmal einführen zu müssen, schlagen wir eine Reihe von kleinen Aufgaben vor, in denen die Begriffe nach und nach vorkommen. Trotz dieses Vorgehens werden die Schüler (mindestens) bei der relativ schwierigen Aufgabe 2 die Hilfe der Lehrerin benötigen.
- Spätestens jetzt wird man sich damit abfinden müssen, dass die einzelnen Gruppen in sehr unterschiedlichem Tempo vorankommen. Man sollte diejenigen, denen das Programmieren leichter fällt, auf keinen Fall ausbremsen, sonst besteht die Gefahr, dass sie sich langweilen. Die Aufteilung der Unterrichtsstunde in viele kleine Aufgaben macht es für die Lehrerin leichter: Jede Gruppe hat zu jeder Zeit etwas zu tun.
- Wir raten, die Zweiergruppen so zusammenzustellen, dass beide Schüler ein ähnliches Niveau haben. Bei einem allzu ungleichen Team wird der versiertere Schüler alles machen und der andere nur passiv neben ihm sitzen.
Die Lehrerin erklärt, dass die Besatzung der Basisstation Wasser und Nahrung braucht, um zu überleben. Wasser gibt es auf dem Planeten in Form von Eis, als Nahrung gibt es eine Pflanzenart. (Dass auf einem kargen Planetenboden Pflanzen wachsen und es parallel Wasser nur in Form von Eis gibt, ist nicht gerade realistisch, aber das soll uns nicht weiter stören, es ist ja nur ein Spiel.) Der Spieler muss den Rover so steuern, dass er Eisstücke und Pflanzen sammelt. Für jedes Stück Eis und jede Pflanze gibt es einen Punkt. Es soll also auch ein Punktestand programmiert werden.
Aufgabe 1: Ein Objekt (neue Figur) hinzufügen (5 min)
Die Schüler öffnen das am Ende der letzten Stunde abgespeicherte Programm. Sie laden eine neue Figur hoch: einen Eisbrocken (Datei Eis.png, siehe Dateien für das Rover-Spiel).
Die Lehrerin erinnert die Schüler daran, dass sie die Anfangsposition des Eisbrockens festlegen müssen (Initialisierung mit "gehe zu x:[--] y: [--]"). Sie können das Eis irgendwo auf dem Planetenboden platzieren (Rover und Eis sollten natürlich nicht übereinander liegen).
Abb. 1: Rover und Eis auf dem Planeten (zum Vergrößern auf das Bild klicken)
Pädagogische Anmerkung
Das Eis hat seinen eigenen Skriptbereich. Man wechselt die Skriptbereiche, indem man auf die jeweilige Figur im Figurenbereich klickt. Es kann theoretisch genauso viele Programme geben, wie es Figuren gibt. Alle Programme laufen parallel.
Aufgabe 2: Wenn der Rover es berührt, sagt das Objekt "Bravo!" (20 min)
Die Schüler schreiben ein Skript für das Eis: Es soll "Bravo!" sagen, wenn es vom Rover berührt wird. Die Lehrerin lässt die Schüler zunächst selbst probieren. Sie geht von Gruppe zu Gruppe und hilft, wenn nötig. Die Aufgabe kann schrittweise gelöst werden.
- Zunächst müssen die Schüler programmieren, dass das Eis "Bravo!" sagt (wie das geht, wissen sie bereits).
- Anschließend müssen die Schüler herausbekommen, mit welchem Befehl eine Anweisung nur dann ausgeführt wird, wenn eine bestimmte Bedingung erfüllt ist. In der Kategorie "Steuerung" gibt es dafür die Anweisung "falls <__> dann ...".
- Zum Schluss müssen sie herausfinden, wie man abfragt, ob sich zwei Figuren berührt haben. In der Kategorie "Fühlen" gibt es das Element "wird [--] berührt?". Klickt man auf den kleinen schwarzen Pfeil vor dem Wort "berührt", werden nach "Mauszeiger" und "Rand" alle Figuren aufgelistet, die im Programm vorkommen. Die Schüler arbeiten gerade am Skript für das Eis und es soll abgefragt werden, ob sich Rover und Eis berührt haben. Daher wählen sie aus der Liste den "Rover" aus.
Abb. 2: Skript für das Eis
Wenn man nun das Programm startet und den Rover auf das Eis zusteuert, passiert nichts (es gibt keine Sprechblase mit "Bravo!"). Warum nicht? Die Klasse kann gemeinsam besprechen, was dieses Programm macht, Schritt für Schritt.
- Das Eis wird an die Anfangsposition gesetzt.
- Es wird ein Test durchgeführt: Wenn das Eis den Rover berührt, dann sagt das Eis "Bravo!".
- Und dann ... nichts mehr.
Der Test wird in diesem Programm nur ein Mal ausgeführt, gleich nach der Initialisierung (bei der das Eis an seine Anfangsposition gesetzt wird). Am Anfang berühren sich aber Rover und Eis nicht. Deshalb erscheint "Bravo!" auch nicht. Das hat seine Richtigkeit.
Damit das Programm richtig funktioniert, muss der Test "Berührt das Eis den Rover?" permanent ausgeführt werden, sodass sobald Eis und Rover sich berühren, der Folgebefehl ausgeführt werden kann. Also setzt man den Test in eine Endlosschleife aus der Kategorie "Steuerung" (siehe Abb. 3).
Abb. 3: Korrigiertes Skript für das Eis
Aufgabe 3: Ein Objekt verschwinden lassen, wenn es berührt wird (10 min)
Dazu muss man im Skript für das Eis lediglich die Anweisung "Sage [Bravo!]" durch eine Anweisung ersetzen, die das Eis verschwinden lässt. Das geschieht mit dem Befehl "verstecke dich" aus der Kategorie "Aussehen".
Achtung, sobald man das Programm ein Mal gestartet hat, und der Rover das Eis berührt hat, ist und bleibt das Eis verschwunden. Damit es bei jedem Programmstart im Bühnenbild erscheint, muss direkt hinter dem Ereignisbefehl "Wenn [grüne Flagge] angeklickt" der Befehl "zeige dich" eingefügt werden.
Abb. 4: Wenn ein Objekt berührt wird, verschwindet es.
Aufgabe 4: Die Variable "Punktestand" hinzufügen (5 min)
Die Lehrerin erinnert die Schüler an den Punktestand. Der Punktestand soll jedes Mal um einen Punkt erhöht werden, wenn der Rover das Eis berührt hat – das heißt wenn er Wasser für die Menschen in der Basisstation besorgt hat. Auch hier können die Schüler zunächst selbst erforschen, in welcher Kategorie vielleicht etwas Passendes wäre. Die Lösung findet sich dieses Mal in der Kategorie "Daten". Man muss dort auf "Neue Variable" klicken.
Abb. 5: Variablen hinzufügen
Pädagogische Anmerkungen
- Die neue Variable könnte man "Punktestand" oder "Punkte" nennen. Die Variable kann entweder "lokal" oder "global" sein. Das heißt entweder kann nur die Figur, in deren Skript sie erzeugt wird, auf die Variable zugreifen oder alle Figuren. Beim Erzeugen der Variablen hat man daher die Wahl zwischen "Für alle Figuren" und "Nur für diese Figur".
- Damit ein Programm leichter verständlich bzw. lesbar ist, sollte man den Variablen sprechende Namen geben. Den Variablen vernünftige Namen zu geben, ist eine gute Gewohnheit, die auch bei der Fehlersuche hilft. "Punktestand" ist zum Beispiel ein eindeutiger Name. Manche Schüler verwechseln Variable und das, was man mit der Variablen tun möchte, und nennen sie zum Beispiel "den Punktestand um 1 erhöhen".
- Die Schüler werden feststellen, dass die erzeugte Variable oben links im Bühnenbild angezeigt wird, zusammen mit ihrem Wert. Soll sie nicht angezeigt werden, muss man in der Kategorie "Daten" das Häkchen links neben der Variablen entfernen.
Da der Punktestand von den Aktionen mehrerer Figuren beeinflusst wird, ist es sinnvoll, dass alle Figuren auf die Variable "Punktestand" zugreifen können.
Die Lehrerin kann die Schüler darauf aufmerksam machen, dass sie bereits mit Variablen herumhantiert haben, und zwar mit den Koordinaten x und y, die die Position einer Figur auf dem Bildschirm bestimmen. Diese Variablen waren in Scratch schon vorhanden und die Schüler haben mit ihnen Tests gemacht, ihnen Werte zugeordnet usw.
Aufgabe 5: Den Punktestand ändern (5 min)
Die Schüler beschließen, wie der Punktestand erhöht wird. Zum Beispiel könnte es jedes Mal einen Punkt geben, wenn der Rover das Eis oder die Pflanze berührt. Die Schüler müssen dann nach dem Befehl suchen, mit dem die Variable "Punktestand" um 1 erhöht wird.
Abb. 6: Die Variable "Punkte" um einen Punkt erhöhen
Abb. 7 zeigt, wie es geht: In das Skript für das Eis wird der Befehl "ändere [Punkte] um [1]" eingefügt, und zwar innerhalb des Tests "falls < wird [Rover] berührt? > dann ...", direkt unterhalb der Anweisung "verstecke dich".
Abb. 7: Programm mit Punktestand
Pädagogische Anmerkung
- Die bereits im Programm verankerten Variablen x und y findet man in der Kategorie "Bewegung" (ganz unten). Ebenso die Befehle, die diese beiden Variablen beinhalten, wie zum Beispiel "ändere x um [10]" oder "setze x auf [0]". Die durch den Nutzer erzeugten Variablen befinden sich dagegen alle unter der Kategorie "Daten". Dort gibt es die Befehle "setze [Variable] auf [--]" und "ändere [Variable] um [--]". Mit dem ersten Befehl gibt man der Variablen einen festen Wert. Mit dem zweiten Befehl kann man den Wert der Variablen um eine bestimmte Zahl erhöhen (oder erniedrigen).
- Damit sich die Schüler mit diesen beiden Befehlen vertraut machen, lässt man sie eine Weile herumspielen. Sie können an der Anzeige der Variablen im Bühnenbild immer verfolgen, was mit dem Wert der Variablen gerade passiert ist.
Aufgabe 6: Den Punktestand auf null setzen (10 min)
Die Schüler testen immer wieder, was passiert, wenn der Rover das Eis berührt. Das Programm scheint gut zu funktionieren: Das Eis ist da, der Rover berührt es, das Eis verschwindet und der Punktestand erhöht sich um 1. Allerdings wird bei jedem Neustart der Punktestand nicht zurück-, sondern fortgesetzt.
Damit der Punktestand zu Beginn des Spiels auf null gesetzt wird, muss man zu den Initialisierungsbefehlen noch den folgenden hinzufügen: "setze [Punkte] auf [0]".
- Es spielt keine Rolle, in welchem Skriptbereich diese Initialisierung steht. Sie kann im Skriptbereich jeder beliebigen Figur stehen. Wichtig ist, dass die Variable ein Mal (und nur ein Mal) initialisiert wird. Da mehrere Figuren (der Rover, das Eis, und später noch weitere Figuren) auf den Punktestand zurückgreifen, ist es logischer, die Initialisierung in das Programm des Rovers zu schreiben, da dieses unser Hauptprogramm ist. Man könnte sie direkt unter den Befehl platzieren, der die Anfangsposition des Rovers festlegt.
- Man kann auch beschließen, dass das Hauptprogramm der Hintergrund und nicht eine der Figuren ist. In diesem Fall, wird man alle Initialisierungsbefehle in dem Skriptbereich des Hintergrunds unterbringen – unterhalb des Ereignisbefehls "Wenn [grüne Flagge] angeklickt".
- Wenn man eine neue Variable erzeugt, sollte man sofort daran denken, sie zu initialisieren. Das ist eine gute Programmierangewohnheit.
Abb. 8: Zu Beginn des Spiels wird der Punktestand auf null gesetzt (im Skript des Rovers).
Aufgabe 7: Objekt erscheint an zufälligem Ort (15 min)
Das Spiel wird spannender, wenn das Eis (und später auch die Pflanze) wieder erscheint, nachdem es der Rover eingesammelt hat. Es sollte aber nicht immer an der gleichen Stelle, sondern irgendwo an einem Zufallsort erscheinen. Dafür braucht man den Befehl "gehe zu x: [--] y: [--]" sowie ein neues Element aus der grünen Kategorie "Operatoren": "Zufallszahl von [--] bis [--]".
Da im Bühnenbild x zwischen −240 und +240 variieren kann, und y zwischen −180 und +180, kann man dem Eis mit dem in Abb. 9 abgebildeten Befehl eine Zufallsposition zuordnen.
Abb. 9: Gehe zu einer Zufallsposition.
Nun braucht man das Eis auch nicht mehr zu verstecken, wenn es berührt wurde, weil es einfach an einer anderen Stelle wieder erscheint. Das endgültige Skript für das Eis ist in Abb. 10 abgebildet.
Abb. 10: Skript für das Eis
Auch die Anfangsposition des Eises könnte eine Zufallsposition sein, anstatt x = 126, y = 87, wie in unserem Beispiel.
Pädagogische Anmerkung
- Die Lehrerin wird hier wahrscheinlich wenig eingreifen müssen. Sie kann fragen, zwischen welchen Werten x und y variieren können. Die Verbindung zwischen "zufälliger Position" und "Zufallszahl" ist ziemlich eindeutig.
- Die Lehrerin kann den Tipp geben, in der Kategorie "Operatoren" zu suchen, aber vielleicht brauchen die Schüler den Tipp gar nicht. Dass sie in die Felder −240 und 240 bzw. −180 und 180 eingeben müssen, werden sie auch von selbst herausfinden.
Aufgabe 8: Eine dritte Figur hinzufügen (20 min)
Die Schüler sollen nun eine weitere Figur hinzufügen: die Pflanze. Für die Pflanze muss wieder das gleiche Skript geschrieben werden wie für das Eis:
- Die Pflanzenfigur hochladen.
- In einer Endlosschleife testen, ob der Rover die Pflanze berührt. Wenn ja, muss der Punktestand um 1 erhöht werden, und die Pflanze muss an einer anderen zufälligen Stelle wieder erscheinen.
Diese Aufgabe hilft den Schülern, das Gelernte zu festigen.
Zusammenfassung
Die Schüler fassen zusammen, was sie in dieser Unterrichtsstunde gelernt haben.
- Man kann in einem Programm Variablen erzeugen. Man sollte jeder Variablen einen Anfangswert zuordnen.
- Ein Programm kann Zufallszahlen generieren, sodass jedes Mal, wenn das Programm durchlaufen wird, ein anderes Ergebnis herauskommt.
Das Programm, wie es zum Ende dieser Unterrichtsstunde aussehen könnte: rover-spiel-8.4.sb2 (siehe Das Rover-Spiel – die fertigen Skripte).
Die Lehrerin vervollständigt das Plakat "Was ist Informatik?".
Letzte Aktualisierung: 29.11.2023