Dies ist eine alte Version des Dokuments!
Ein Spiel programmieren mit Scratch
A. Programmablauf (Datenverarbeitung)
Das EVA Prinzip
Ein Programm kann Eingabeinformationen enthalten, diese verarbeiten und dann allenfalls das Ergebnis als Ausgabe anzeigen. Oft wird hier auch vom EVA Prinzip gesprochen.
E: Eingaben können über von Benutzern die Tasten, die Maus oder den Touchbildschirm direkt gemacht werden. Es können aber auch Eingaben über Sensoren oder andere Computersysteme erfolgen. Kurz kann eine Eingabe über Nutzerinteraktion, Externe Informationen oder Sensoreingaben erfolgen.
In Scratch wird eine Figur oder ein Schieberegler durch den Spieler angeklickt bzw. verschoben oder auch nur mit dem Cursor darüber gefahren.
V: Das Scratch-Programm arbeitet die Anweisung der Blöcke Schritt für Schritt ab, sobald die grüne Fahne gedrückt wird.
A: Die Ausgaben erfolgen über den Bildschirm, einen Drucker oder das Senden der Ausgabeinformation an ein anderes System. In Scratch wird dies auf der Bühne angezeigt und ist auch im fertig programmierten Spiel durch den Spieler als Spiel wahrnehmbar.
Ein Programm in Scratch entsteht durch das zusammenfügen von so genannten Code-Blöcken. Diese sind teilweise schon von Scratch bereitgestellt. Es können aber auch neue Blöcke definiert werden.
In diesen Code-Blöcken gibt es viele wichtige Elemente wie Schleifen, Variablen, Bedingungen, welche in von vielen Programmiersprachen verwendet werden.
B. Scratch-Umgebung
Öffnen Sie den Scratch im Browser unter Ihnen steht es frei, die Programmierumgebung hier runterzuladen oder online zu programmieren und somit ein Scratchkonto zu erstellen.
Schaltfläche
- Skript, Bühnenbild (bzw. Kostüme) und Klang. Was wird ausgewählt: Eine Figur oder ein Hintergrund? Je nach Wahl wird «Bühnenbild» oder «Kostüm» oben in der zweiten Schaltfläche sichtbar. Die Schaltfläche Skript beinhaltet das Programm der ausgewählten Figur oder des aktiven Bühnenbildes (der entsprechenden Bühne).
- Die Bühne sowie die Figur kann verändert werden. Dies mit Zeichenwerkzeugen auf der Schaltfläche Kostüm bzw. Bühnenbild. Hier ist darauf zu achten, dass zwischen Raster- und Vektorgrafik gewechselt werden kann. Es muss gut aufgepasst werden, was aktiviert wurde: welche Bühne bzw. welche Figur.
Bühne
Hier kann der Benutzer mit dem Programm interagieren und die grafische Ausgabe des durchlaufenen Programms sind sichtbar. Verschiedene Bühnenbilder können ausgewählt, selbst gestaltet oder hochgeladen werden.
Wichtig ist hierbei, dass die Koordinaten zwischen -240 ganz links und 240 ganz rechts horizontal (für die x-Koordinate) und zwischen -180 ganz unten und 180 ganz oben vertikal (für die y-Koordinate) gewählt werden können.
Figuren
Figuren bilden die Grundlage von Scratch, sie können sich auf der Bühne bewegen, das Aussehen verändern oder mit anderen Figuren interagieren. Diese Figuren werden über Scripts (Programme) gesteuert. Als BenutzerIn kann man eine Scratch-Figur aus einer grossen Menge an Figuren auswählen, man kann diese auch verändern oder eigene Figuren hochladen.
C. Scratch-Blöcke
Eingabeblöcke
- Fühlblöcke: Diese Blöcke prüfen, ob eine Figur oder Farbe mit dem Cursor berührt oder ob eine Taste gedrückt wurde, d.h. eine Eingabe erfolgt.
- Ereignisblöcke: Diese Blöcke reagieren, wenn auf die grüne Fahne oben zwischen Scriptbereich und Bühne geklickt wird (den «LOS» -Button) oder auch wenn eine Figur angeklickt oder eine Taste gedrückt wird, dies je nach Programm.
Verarbeitungsblöcke
- Die gewölbten Ereignisblöcke werden als Code-Start-Element genutzt. Beispielsweise, ein gelber Fühlblock.
- Steuerungsblöcke: Andere Steuerungsblöcke treffen Entscheidungen oder geben auch vor, wie oft ein Scriptauschnitt wiederholt oder wie lange dieser angehalten werden soll.
- Schleifen: Eine Schleife ist ein Teil eines Programms, der wiederholt werden soll. Die Blöcke werden in Klammern eines wiederhole-Blcks gesetzt, damit Scratch weiss, wo die Wiederholung im Programm beginnt und endet. Hier gibt es auch Endlosschleifen (wiederhole fortlaufend), denn manchmal muss ein Programmschritt fortlaufen wiederholt werden, bis er ausdrücklich beendet wird. Dieser Programmteil wird erst beendet, wenn der rote Stop-Button in der Schaltfläche geklickt wird oder mit dem Block „Stoppe alles“ das Script beendet wird.
- Entscheidungsblöcke: Entscheidungen werden mit Scratch mit dem falls-dann Block oder dem falls-dann-sonst-Block programmiert. Der Ausdruck im Rautenfeld ist entweder WAHR (true) oder FALSCH (false). Die Scriptteile innerhalb des Blocks wird nur ausgeführt, falls der Ausdruck WAHR ist ansonsten wird dieser Codeteil übersprungen.
- Blöcke mit Variablen: Viele Programmiersprachen verwenden Variablen zur Speicherung von Informationen. In Variablen kann eine Zahl, ein Textteil (string), eine Liste oder auch der Wert «Wahr» oder «Falsch» als Wert (Inhalt) haben. In einer Variable gibt es «Platz» dafür. In einem Spiel kann beispielsweise der Name des Spielers oder der Punktestand gespeichert werden. Es gibt Blöcke, die solche Variablen verändern, verbinden (falls string) , etwas damit berechnen oder auch diese als Zufallszahl selber setzen können.
Ausgabeblöcke
- Bewegungsblöcke: Diese Blöcke zeigen die Ausgabe eines Programms, indem sie die Figuren auf der Bühne bewegen und steuern.
- Aussehen oder Klangblöcke: Auch diese Blöcke sind Ausgabeblöcke, da das Aussehen der Figur oder auch der Bühne verändert wird oder aber ein Klangeffekt abgespielt wird
C. Scratch-Spiel programmieren
Die Spezifikation
Was soll das Spiel können? Wie genau soll das Standardspiel genau funktionieren? Hier eine mögliche Beschreibung.
- Der Spieler navigiert sein Raumschiff mithilfe der Pfeiltasten (Standard: Nach oben und nach unten) durch einen Asteroidenhagel.
- Ein Regler für die Geschwindigkeit des Hagels steuert das Spieltempo. Die Häufigkeit, mit der neue Asteroiden auftauchen, nimmt mit dem Spielverlauf zu.
- Sobald ein Asteroid das Raumschiff berührt, endet das Spiel.
- Wird die Leertaste gedrückt, feuert das Raumschiff Laserstrahlen ab, um die Asteroiden so zu zerstören. Die Munition (Anzahl Laserschüsse) wird gezählt und wird während des Spiels abnehmen.
Das Programm muss fortlaufen in einer Schleife kontrollieren, welche Taste gedrückt wird. Mit dieser Schleife prüft das Programm auch laufend, ob die Rakete von Asteroiden getroffen wurde.
Das Setting
Durch diesen Programmteil wird die Spielumgebung und die Figuren festgelegt.
| Etappen | Beschreibung | Hinweis |
|---|---|---|
| 1 | Fügen Sie die Figur Rakete (Rocketship) und die Figur Asterioden (Rocks) aus der Figurenbibliothek hinzu. | Hinweis |
| 2 | Bereiten Sie die Bühnenbilder vor. Wählen Sie ein Weltall-Bühnenbild (Space) als Spielfläche und ein zweites Bühnenbild, welches beim Abfeuern eines Laserschusses kurz gezeigt werden soll. Dabei soll der Weltraumhintergrund als Standardbühne angewählt werden. | Hinweis |
| 3 | Erstelle die neuen Variablen: | |
| „Ausweichen“, diese zählt, wie vielen Asteroiden das Raumschiff ausgewichen ist. | ||
| „Munition“ ,diese speichert die Anzahl verbleibender Laserschüsse. | ||
| „Zeitabstand“, hier wird die Zeit zwischen dem Auftauchen von Asteroiden in Sekunden angegeben. | ||
| „Geschwindigkeit“, wie bereits erwähnt, die Geschwindigkeit des Raumschiffs. | ||
| „Punkte“, so wird der Spielstand gespeichert. | ||
| Bei den Variablen müssen die Munition, die Punkte und die Geschwindigkeit durch ein Häckchen angewählt werden, damit diese auf dem Bildschirm erscheinen. | Hinweis | |
| 4 | Bereiten Sie die Bühnenbilder vor. Wählen Sie ein Weltall-Bühnenbild (Space) als Spielfläche und ein zweites Bühnenbild, welches beim Abfeuern eines Laserschusses kurz gezeigt werden soll | Hinweis |
Das Raumschiff
In diesem Teil des LABs geht es darum, das Raumschiff zu programmieren. Bei den Hinweisen finden Sie jeweils einen möglichen Programmteil. Die Beschreibung sollte befolgt werden, alle Punkte beachtet.
| Etappen | Beschreibung | Hinweis |
|---|---|---|
| 1 | ||
| Figurengrösse: Die Raumschiffgrösse auf 50 setzen. | ||
| Raumschiff positionieren: Das Raumschiff in (-200/0) positioniert und nach rechts ausrichtet. | ||
| Variablen setzen: Die Geschwindigkeit auf 0, das Ausweichen auf 0, die Punkte auf 0, den Zeitabstand auf 2 und die Munition auf 3 setzt. | Hinweis | |
| 2 | Die Steuerung wird wie folgt programmiert: | |
| Eine endlose Schleife „wiederhole fortlaufend“ auswählen. Dadurch überprüft das Programm fortlaufend, was innerhalbt der „orangen Klammer“ passiert, hier: ob die Pfeiltasten gedrückt werden. | ||
| In der Schleife eine Bedingung „falls,… dann“ und hier sollte die Bedingung „Taste Pfeil nach oben gedrückt?“, dann ändere y um 10. | ||
| Die zweite „falls,… dann“-Bedingung in der Schliefe sollte die Bedingung „Taste Pfeil nach unten gedrückt?“, dann ändere y um -10 | Hinweis | |
| Testen Sie das geschriebene Script, starten Sie das Spiel über die grüne Fahne oben in der Mitte des Fensters. Verschieben Sie vor dem Testen die Anzeigen (zum Scrollen) in die obere rechte Ecke. | ||
| 3 | Kollision? | |
| Im nächsten Schritt soll programmiert werden, was passiert, wenn das Raumschiff eine Kollision mit dem Asteroiden hat. dies geschieht über einen eigenen Scriptteil, gestartet durch einen Ereignisblock (mit der Startfahne). | ||
| Eine endlose Scheife soll beinhalten, dass über eine Bedingung (falls, dann) immer kontrolliert wird, ob die Rakete einen Asteroiden berührt. Falls dies der Fall ist, soll „Spiel beendet!“ an alle gesendet werden. | Hinweis | |
| 4 | Laser | |
| Nun wird der Laser programmiert, dadurch kann das Raumschiff den Asteroiden vor sich abschiessen. Auch dies geschieht über einen eigenen Scriptteil, gestartet durch einen Ereignisblock (mit der Startfahne). | ||
| Hier muss mit einer Bedingung (falls…dann) gestartet werden, denn nur so kann überprüft werden, ob überhaupt Munition vorhanden ist. In dieser Bedingung kann dann beispielsweise ein Klang für den Laserschuss gesetzt werden, zudem sollte der Wert der Munitionsvariable um 1 vermindert werden, das Bühnenbild kann für den Schuss für einige Sekundenbruchteile gewechselt werden und es muss „Laser!“ als Botschaft an alle gesendet werden. | Hinweis | |
| 5 | Punkte sammeln oder verlieren | |
| Während des Spiels sollen auch Punkte gesammelt werden können. Genauer soll für 5 Asteroiden, denen ausgewichen werden konnte, ein Punkt dazugezählt werden. Gleichzeitig wird aber nach diesen 5 Asteroiden auch der Zeitabstand zwischen den Asteroiden verringert. | ||
| Als erstes muss auch mit einem Ereignisblock gestartet werden. Dieser soll starten, wenn die Botschaft „Punkte aktualisieren“ empfangen wird. Wenn der Block startet, dann braucht es auch hier eine Bedingungn (falls…dann), diese Bedingung lautet natürlich, wenn die Anzahl „Ausgewichen“ eine Fünferzahl ist, dann sollen die Punkte um eins erhöht werden, und falls der Zeitabstand noch grösser als 0,5 Sekunden beträngt, dann soll dieser um den Faktor 0.9 verringert werden (Setze Zeitabstand auf 0.9*Zeitabstand. TIPP: Die 5er Zahlen können mit dem Befehl mod (was Modulo heisst und bei einer Division nur den Rest angibt) genutzt werden. Beispiele: 23 mod 5 = 3 (weil 3 Rest sind und 20 durch 5 geteilt werden können) | Hinweis | |
Der Asteroid
Nun soll der Asteroid als Figur und Klone davon programmiert werden. Es ist wichtig, dass die richtige Figur aktiviert wird.
| Etappen | Beschreibung | Hinweis |
|---|---|---|
| 1 | Einen Asteroiden erzeugen | |
| Wählen Sie in der Figurenliste die Asteroiden-Figur aus und fügen Sie einen Code in den nun wieder leeren Skriptbereich hinzu: | ||
| Hier soll beim Start einen Asteroiden der Grösse 22 erzeugt werden aber noch nicht sichtbar sein (sich verstecken). | ||
| Anschliessend wird eine Scheife fortlaufend wiederholt, diese Scheife erzeugt weitere Asteroide, sogenannte Klons. Dabei sollten nach dem Erzeugen immer ein Zeitabstand-Moment gewartet werden. | Hinweis | |
| 2 | Der Asteroidenhagel | |
| Nun soll ein Schwarm von Asteroiden entstehen. Dies ist vermutlich etwas knifflig. Hier einige Hinweise, die befolgt werden sollten. | ||
| Als Ereignisblock sollte „Wenn ich als Klon enstehe“ gewählt werden, denn so kann das Klonen vom vorhergehenden Skriptblock genutzt werden. | ||
| Jetzt sollte die Grösse auf eine Zufallszahl zwischen 20 und 50 gelegt werden (oder auch andere Zahlenwerte). Diese geben die Grösse des erzeugten Asteroiden an. | ||
| Nun braucht es wieder eine endlose Schleife (wiederhole fortlaufend). Alles was jetzt kommt, ist in dieser Schleifen gepackt. | ||
| Zuerst muss sich der Klon ziegen und an den Ort 200 für x und für y eine Zufallszahl zwischen -240 und 240 platziert werden. | ||
| Hier muss nun eine Schleife in der Schleife programmiert werden. Und zwar soll sich der Asteroid immer um 15 Grad (oder eine andere Gradzahl) drehen und dabe die x-Position um (-1 mal die Geschwindigkeit) verändert. Dadurch fliegt er von rechts nach links. | ||
| Als drittes braucht es eine Bedingung. Falls die x-Position kleiner als -240 (also -250 oder so), dann ist ja der Asteroid schon durch den Bildschirm gefolgen, ohne das Raumschiff zu treffen. Dann soll der Wert der Variablen um 1 erhöht werden, die Nachricht „Punkte aktuallisieren“ an allge geschickt werden und als letztes der Klon noch gelöscht werden. | Hinweis | |
| 3 | Asteroiden Löschen, Explosion zeichnen und das Spiel beenden. | |
| Die Laserkanone muss noch programmiert werden, damit der Asteroid auch zerstört wird, wenn das Raumschiff auf diesen Feuert. | ||
| Starten Sie mit einem Ereignsiblock „Wenn ich Laser empfange“ | ||
| Anschliessend muss nichts anderes geschehen, als dass der Klon gelöscht wird. | ||
| 4 | Das Ende des Spiels: Ein Zusammenstoss mit dem Asteroiden. | |
| Während des Zusammestosses soll es knallen und eine weitere Figur (beispielsweise die Sonnen-Figur) soll diese Explosion darstellen. Wechseln Sie somit zur Sonnenfigur und programmieren Sie folgendes | ||
| Zu beginn soll die Sonne sich verstecken. | ||
| Wenn die Nachricht „Spiel beendet!“ empfangen wird, dann soll die Sonne sich bei (0/0) zeigen und eine grosse Grösse haben. Danach soll alles gestoppt werden. Ansonsten würde das Spiel wegen der Endlosscheifen immer weiterlaufen. | ||
Bemerkung
- Testen Sie das Spiel!
- Beheben Sie Fehler!
- Erweitern Sie das Spiel!
- Speichern Sie das Spiel und laden Sie das Spiel (oder falls online den Link dazu) auf OneNote in Ihre Gruppe!
- eine mögliche Lösung könnte so aussehen. Ein möglicher Lösungscode ist auf OneNote.
Erweiterungsmöglichkeiten:
- Animieren Sie das Raumschiff mit verschiedenen Kostümen, welche zu bestimmten Zeitpunkten gewechselt werden.
- Wechseln Sie bei verschiedenen Geschwindigkeit das Bühnenbild (Hintergrund)
- Lassen Sie die Rakete auch nach vorne und Hinten fliegen.
- Lassen Sie die Asteroiden von ganz verschiedenen Positionen heranfliegen.
- eigene Ideen umsetzen.
Nachbearbeitung:
- Zu zweit ein Spiel zum Laufen bringen bis vor den Ferien, Sie bekommen noch 45 Minuten Zeit in einer Lektion.
- Die wichtigsten Erkenntnisse: Was Sie gelernt haben, auf was man achten muss und ein von Ihnen gelöstes Problem Ihrer Spielprogrammierung beschreiben. Auch welche Lehren Sie daraus ziehen.
- Die Programmierelemente identifizieren und den Code erklären können. (Beispielsweise: Ein Stück Code eines Spiels einer anderen Gruppe verstehen und erklären können.)
- Verstehen, was Modulo macht. Siehe Schritt 5 beim Raumschiff


