8.8: Das Rover-Spiel spannender machen
Autoren: | |
Publikation: | 2.10.2016 |
Lernstufe: | 3 |
Übersicht: | Das Rover-Spiel wird zu Ende programmiert. Die Schüler fügen Elemente hinzu, um das Spiel spannender zu machen, zum Beispiel einen Countdown und einen Wirbelsturm, der sich zufallsbedingt über die Spielfläche bewegt und immer schneller wird. |
Angestrebte Kenntnisse: |
|
Dauer: | zwei bis drei Stunden |
Material: |
Für jede Zweiergruppe:
|
Herkunft: | La main à la pâte, Paris |
Ausgangssituation
Die Schüler werden schnell bemerken, dass das Spiel zwar ganz nett ist, aber keine größeren Herausforderungen bietet. Wenn man gut aufpasst, dass man die Hindernisse umschifft, kann das Spiel endlos weitergehen. Die Klasse überlegt sich also, wie man das Spiel schwieriger machen könnte.
- Möglichkeit 1: Man kann einen Countdown hinzufügen. Wenn die Zeit abgelaufen ist, ist das Spiel beendet. Man muss also möglichst schnell Eis und Pflanzen einsammeln, und möglichst wenige Leben verlieren.
- Möglichkeit 2: Man kann ein weiteres Element einfügen, das das Spiel immer schwieriger macht und es zu einem bestimmten Zeitpunkt beendet. In unserem Beispiel haben wir einen Wirbelsturm ins Spiel gebracht (in Anlehnung an die Frage zur Wettervorhersage in der Unterrichtsstunde 7.2 (Mit Zahlen eine Nachricht verschlüsseln). Dieser Wirbelsturm bewegt sich immer schneller, und man weiß auch nicht, welche Richtung er einschlagen wird. Irgendwann kann der Rover ihm nicht mehr ausweichen und das Spiel ist beendet.
Pädagogische Anmerkungen
- Die Lehrerin lässt die ganze Klasse diskutieren, welche Möglichkeiten es gäbe. Es müssen auch nicht alle Gruppen das Gleiche programmieren.
- Die Lehrerin sollte darauf achten, dass die einzelnen Gruppen klare Vorstellungen und Ideen haben, wie sie ihr Vorhaben umsetzen wollen bzw. können. Manche Ideen mögen sehr reizvoll erscheinen, man sollte aber auch ihre Machbarkeit im Blick haben.
Wir beschreiben im Folgenden die zwei bereits weiter oben genannten Vorschläge. Wir werden auch noch andere Möglichkeiten aufzeigen, das Spiel zu erweitern – nicht unbedingt, um es schwieriger zu machen, sondern zum Teil auch, um Bugs im Programm auszumerzen.
Die folgenden Aufgaben sind alle unabhängig voneinander und sie haben sehr unterschiedliche Schwierigkeitsgrade. Wir raten, wenigstens die Aufgabe 2 oder 3 durchzuführen, um das Spiel spielenswert zu machen.
Aufgabe 1: Ein Countdown zu Spielbeginn (15 min)
Man könnte das Spiel erst nach einem Countdown starten lassen: 5, 4, 3, 2, 1, los! Das geht ganz einfach, siehe Abb. 1.
Abb. 1: Skript für einen Countdown
Oder eleganter, mit einer neuen Variablen und einer Schleife:
Abb. 2: Countdown mit Schleife
Je nach Niveau der Schüler können sie die einfache Variante programmieren oder die kompliziertere mit einer Variablen und einer Schleife. Beide Skripte führen zum gleichen Ergebnis. Für die kompliziertere Variante könnte die Lehrerin folgende bewährte Methode wählen: Sie könnte den Schülern eine Datei geben, in der alle benötigten Elemente bereits in den Skriptbereich gezogen wurden, ungeordnet und nicht miteinander verknüpft. Die Schüler müssen dann "nur" noch alles richtig ordnen und verbinden.
Aufgabe 2: Die Spieldauer begrenzen (15 min)
Pädagogische Anmerkungen
- Diese Aufgabe ähnelt der Aufgabe 1, aber diesmal muss unbedingt die komplexere Variante gewählt werden (mit Variable und Schleife). Einen Countdown, der mehrere Minuten lang die Sekunden rückwärts zählt, kann man auf keinen Fall ohne Schleife programmieren (man bräuchte pro Sekunde eine Programmierzeile (siehe Abb. 1).
- Wenn die Schüler bereits einen Countdown programmiert haben (siehe Aufgabe 1), werden sie auch diese Aufgabe leicht bewältigen. Wenn sie die erste Aufgabe nicht gemacht haben, werden sie wahrscheinlich ein paar Hilfestellungen brauchen.
- In dieser Aufgabe werden sich die Schüler erneut mit Variablen, Tests, Schleifen und logischen Operatoren befassen.
Die Spielzeit zu begrenzen, ist eine sehr einfache Methode, das Spiel spannender zu machen. Man muss dazu nur eine Variable "Zeit" erzeugen, ihr einen Anfangswert geben, und diesen Wert mit der Zeit kontinuierlich kleiner werden lassen.
Das Programm endet, entweder wenn die Variable "Zeit" null ist oder wenn die Variable "Leben" null ist. Ein Skript, das dieses bewirkt, ist in Abb. 3 gezeigt. Die Zeit beträgt zu Beginn 60 und wird jede Sekunde um 1 kleiner. Die Spieldauer beträgt in diesem Fall also eine Minute.
Abb. 3: Die Spieldauer begrenzen
Aufgabe 3: Einen Wirbelsturm hinzufügen, der sich zufallsbedingt fortbewegt (15 min)
Wie man eine Figur hochlädt und sie auf eine Anfangsposition setzt, wissen die Schüler inzwischen sehr gut. Man könnte den Wirbelsturm zum Beispiel unten links starten lassen (x = −230, y = −170).
Anschließend müssen die Schüler einen Weg finden, wie man die Position des Wirbelsturms auf zufällige Weise verändert. Wenn man eine sprunghafte Bewegung zulässt, muss man lediglich die Werte von x und y ändern. Es sieht aber natürlich realistischer aus, wenn man sieht, wie sich der Wirbelsturm von einem Ort zum anderen bewegt. Der passende Befehl dafür ist: "gleite in [--] Sek. zu x: [--] y: [--]" aus der Kategorie "Bewegung".
Da die neue Position des Wirbelsturms eine Zufallsposition sein soll, ist der endgültige Befehl derjenige aus Abb. 4.
Abb. 4: Zu einer Zufallsposition gehen
Die Schüler können es selbst ausprobieren: Wenn sie mehrmals hintereinander auf diesen Befehl klicken, wandert der Wirbelsturm jedes Mal an einen anderen Ort. Die Bewegung (von einem Ort zum nächsten) erfolgt immer in einer Sekunde. Wenn der neue Ort also in der Nähe liegt, wird die Bewegung langsam sein, ist er weiter entfernt, wird die Bewegung schneller sein.
Jetzt muss dieser Befehl noch in das Skript für den Wirbelsturm integriert werden (siehe Abb. 5).
Abb. 5: Skript für die Bewegung des Wirbelsturms
Die Schüler sollten natürlich nicht das Wichtigste vergessen: Wenn der Rover vom Wirbelsturm berührt wird, ist das Spiel zu Ende. Dazu müssen im Skriptbereich des Wirbelsturms noch zwei kleine Skripte hinzugefügt werden (Abb. 6).
Abb. 6: Wenn der Rover vom Wirbelsturm berührt wird, ist das Spiel zu Ende.
Aufgabe 4: Den Wirbelsturm größer werden lassen (15 min)
Um das Spiel noch schwieriger zu machen, kann man den Wirbelsturm, jedes Mal wenn ein Objekt (Eis oder Pflanze) eingesammelt wurde, größer werden lassen. Inzwischen sollten die Schüler so erfahren sein, dass sie diese Aufgabe mehr oder weniger allein meistern können.
In den Skripten für das Eis und die Pflanze muss eine Nachricht versandt werden, sobald eines dieser beiden Objekte berührt wurde.
Abb. 7: Punkte sammeln, wenn man ein Objekt berührt (einsammelt).
Im Skript des Wirbelsturms muss die Größe der Figur (des Wirbelsturms) vergrößert werden – und zwar jedes Mal, wenn die Nachricht "Objekt eingesammelt" empfangen wird. Dafür gibt es in der Kategorie "Aussehen" den Befehl "ändere Größe um [--]".
Abb. 8: Die Größe des Wirbelsturms wird geändert, wenn ein Objekt eingesammelt wurde.
Da wir nun die Größe des Wirbelsturms im Laufe des Programms ändern, müssen wir daran denken, diese Größe am Anfang des Programms zu initialisieren. Dies geschieht mit dem Befehl "setze Größe auf [100]%" aus der Kategorie "Aussehen".
Das Programm könnte in diesem Stadium folgendermaßen aussehen:
rover-spiel-8.8a.sb2
(siehe Das Rover-Spiel – die fertigen Skripte).
Aufgabe 5: Den Wirbelsturm immer schneller werden lassen (20 min)
Diese Aufgabe ist sehr schwierig, eher etwas für die Sekundarstufe I. Es gibt allerdings auch begabte Fünft- oder Sechstklässler, die über jede Herausforderung froh sind. Diese Aufgabe dürfte ganz nach ihrem Geschmack sein.
Der Wirbelsturm soll jetzt immer schneller werden, wenn eine Objekt (Eis oder Pflanze) eingesammelt wurde. Um den Wirbelsturm zu beschleunigen, muss zunächst eine Variable "Geschwindigkeit_Wirbelsturm" erzeugt werden. Am Anfang ist der Wert dieser Variablen 1 (sie kann an der gleichen Stelle initialisiert werden wie die anderen Variablen). Dann wird die Geschwindigkeit jedes Mal um 10% erhöht, wenn ein Objekt eingesammelt wird. Kleiner Trick: Eine Erhöhung um 10% entspricht einer Multiplikation mit 1,1. Abb. 9 zeigt das neue Skript für den Wirbelsturm.
Abb. 9: Die Geschwindigkeit des Wirbelsturms ändert sich.
Die Geschwindigkeit steht in dem Befehl "gleite in [--] zu ...", da sie die Zeit beeinflusst, die der Wirbelsturm braucht, um von einem Ort zum nächsten zu gleiten. Man kann die Geschwindigkeit zum Beispiel so wie in Abb. 10 in die Gleitzeit integrieren. Die Geschwindigkeit steht im Nenner und bewirkt Folgendes: Je höher die Geschwindigkeit ist, desto kürzer ist die Zeit für das Gleiten.
Abb. 10: Skript, um den Wirbelsturm immer schneller werden zu lassen
Aufgabe 6: Begrenzung der Spielfläche aufheben (20 min)
Das Spiel wäre netter, wenn der Rover nicht immer an den Rändern des Bühnenbilds hängenbleiben würde. Man könnte ihn, wenn er rechts an den Rand stößt, am linken Rand wieder erscheinen und direkt weiterfahren lassen, und umgekehrt. Und analog für den oberen und unteren Rand des Bühnenbilds.
Wissenschaftliche Anmerkungen
- Rollt man ein ebenes Blatt Papier zusammen, sodass sich zwei gegenüberliegende Ränder berühren, formt das Blatt einen Zylinder. Zieht man den Zylinder so auseinander, dass sich auch der obere und der untere Rand des Zylinders berühren, erhält man einen Torus (siehe Erklärung in einer Animation). Ein Torus ähnelt einem Fahrradschlauch oder einem Donut.
- Viele Videospiele verwenden einen Torus als "Spielfläche", auch wenn ein Torus in keinster Weise der Form unseres Planeten ähnelt. Wenn man auf der Erde an den Nordpol gelangt, findet man sich nicht plötzlich am Südpol wieder.
Die Lehrerin lässt die Schüler zunächst ein bisschen selbst probieren, sie gibt nur dann Hilfestellungen, wenn sie nicht weiterkommen. Sie kann noch einmal das Problem schildern: Wenn der x-Wert des Rovers größer wird als 240 (rechter Rand), dann muss sein Wert sofort −240 (linker Rand) betragen. Nach einer Weile zeigt sie den Schülern die Blöcke, die man zum Programmieren dieses Problems braucht: eine Endlosschleife, eine Abfrage "Wenn ..., dann ...", den Operator "größer als (>)", die Variable x (in der Kategorie "Bewegung" ganz unten) sowie die Anweisung zum Ändern der Variablen: "setze x auf [--]". Die Blöcke müssen wie in Abb. 11 gezeigt zusammengesetzt werden.
Abb. 11: Die x-Koordinate ändern
Pädagogische Anmerkung
Wegen der Form der Figuren ist es besser, einen kleinen Spielraum zu lassen, also nicht 240, sondern schon 235 als "Rand" zu nehmen.
Wenn alle verstanden haben, wie man vom rechten Rand zum linken Rand gelangt, ist es ein Leichtes zu programmieren, wie man vom linken zum rechten Rand gelangt, vom oberen zum unteren und umgekehrt (Abb. 12).
Abb. 12: Die x- und y-Koordinaten ändern
Pädagogische Anmerkungen
- Abb. 12 zeigt die Möglichkeit auf, wie man dem Skript einen Kommentar hinzufügen kann. Die Schüler sollten sich sofort daran gewöhnen, ihr Programm mit Kommentaren zu versehen. Das hilft, einen besseren Überblick zu behalten und vor allen Dingen hilft es anderen, das Programm zu lesen (und wenn man selbst nach ein paar Monaten wieder in sein Programm schaut, ist man auch über jeden Kommentar froh).
- In diesem Stadium, sollte der Befehl "pralle vom Rand ab" aus den Skripten entfernt werden, in denen der Rover mit den Pfeiltasten gesteuert wird.
Aufgabe 7: Verhindern, dass Objekte und Hindernisse übereinanderliegen (20 min)
Auch diese Aufgabe ist wieder sehr schwer und richtet sich eher an Schüler der Sekundarstufe I oder an Fünft- und Sechstklässler, die ihren Mitschülern voraus sind.
Wenn ein Objekt (Eis oder Pflanze) eingesammelt wurde, erscheint es an einem zufälligen anderen Ort im Bühnenbild. Es ist also möglich, dass es auf einem der Hindernisse landet (Lavasee oder Düne). Es wäre gut, wenn man das verhindern könnte. Es ist nicht sinnvoll, gleichzeitig einen Punkt zu gewinnen und zu verlieren.
Wie kann dieser Fall verhindert werden? Man muss eine weitere Zufallsposition suchen, so lange bis kein Hindernis mehr berührt wird. Das macht man wieder mit einer Endlosschleife. Die Schwierigkeit ist nun: Wie bringt man das Skript dazu, diese Endlosschleife auszuführen? Am Anfang berühren sich Objekte und Hindernisse ja nicht. Und man möchte nicht warten, bis ein Objekt zum ersten Mal auf einem Hindernis liegt, weil damit ja bereits der unerwünschte Fall eingetreten wäre. Der Trick besteht darin, das Objekt mit Absicht auf das Hindernis zu setzen und direkt anschließend die Endlosschleife mit der Suche nach einer neuen Position einzufügen (Abb. 13). Die Vorgehensweise ist also die folgende:
- Das Objekt wird auf die Position eines der Hindernisse gesetzt.
- Dann kommt eine Endlosschleife: Solange das Objekt sich nicht an einer Position ohne Hindernis befindet, wird ihr eine weitere Zufallsposition zugewiesen.
Die Lehrerin wird die Schüler zunächst selbst ausprobieren lassen, muss ihnen dann aber wahrscheinlich die eine oder andere Hilfestellung geben. Sie kann zum Beispiel den Trick verraten, dass das Objekt auf die Position eines der Hindernisse gesetzt werden sollte. Wenn die Schüler nicht auf die Lösung kommen, kann sie ihnen auch das fertige Programm geben und sie untersuchen lassen, was das Programm macht, und warum es das macht.
Abb. 13: Endgültiges Skript für das Eis und die Pflanze
Zusammenfassung
Das Spiel sollte für die Schüler nun spielenswert sein. Es könnte zum Schluss so aussehen: rover-spiel.sb2 (siehe Das Rover-Spiel – die fertigen Skripte). Oder in der Variante, die das Spiel zeitlich begrenzt: rover-spiel-8.8b.sb2
Die Schüler vervollständigen ihre Liste mit den Scratch-Befehlen.
Die Lehrerin organisiert eine Diskussionsrunde, in der die Schüler berichten, was sie im Laufe dieses Projektes gelernt haben, welches die Schwierigkeiten waren, denen sie begegnet sind, und so weiter. Sie fragt sie auch, ob sie dadurch Lust bekommen haben, weitere Scratch-Programme zu schreiben.
- Wahrscheinlich war dieses Programmierprojekt für die Schüler etwas ganz Neues. Damit sie nicht verlernen, mit Scratch umzugehen, aber auch um ihrer Kreativität freien Lauf zu lassen, kann die Lehrerin ihnen vorschlagen, persönliche Projekte zu erstellen: animierte Weihnachts- oder Geburtstagskarten oder ein interaktives Quiz – an Möglichkeiten mangelt es nicht.
- Im letzten Teil dieser Unterrichtseinheit (Das Programmieren mit Scratch vertiefen) werden einige zusätzliche Funktionalitäten von Scratch vorgestellt, um Anregungen für weitere Projekte zu geben.
Letzte Aktualisierung: 29.11.2023