gf1:lab_scratch

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
gf1:lab_scratch [2022/09/20 10:18] marrocgf1:lab_scratch [2025/10/28 06:04] (aktuell) marroc
Zeile 1: Zeile 1:
 =====Ein Spiel programmieren mit Scratch===== =====Ein Spiel programmieren mit Scratch=====
  
-<callout type="primary" title="A. Programmablauf (Datenverarbeitung)"> 
-{{fa>angle-double-down}}<button collapse="coll1" type="link">Bereich ausklappen/einklappen </button> 
-<collapse id="coll1"> 
 ===Das EVA Prinzip=== ===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. {{ :gf1:eva.png?600|}} Ein Programm kann Eingabeinformationen enthalten, diese verarbeiten und dann allenfalls das Ergebnis als Ausgabe anzeigen. Oft wird hier auch vom **EVA Prinzip** gesprochen. {{ :gf1:eva.png?600|}}
Zeile 11: Zeile 8:
 **V:** Das Scratch-Programm arbeitet die Anweisung der Blöcke Schritt für Schritt ab, sobald die grüne Fahne gedrückt wird.  **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 programmeirten Spiel durch den Spieler als Spiel wahrnehmbar.+**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.\\  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.\\ 
Zeile 17: Zeile 14:
 In diesen Code-Blöcken gibt es viele wichtige Elemente wie Schleifen, Variablen, Bedingungen, welche in von vielen Programmiersprachen verwendet werden. In diesen Code-Blöcken gibt es viele wichtige Elemente wie Schleifen, Variablen, Bedingungen, welche in von vielen Programmiersprachen verwendet werden.
  
-</collapse> 
-</callout> 
  
-<callout type="success" title="B. Scratch-Umgebung"> +==== Scratch-Umgebung ===
-{{fa>angle-double-down}}<button collapse="coll2" type="link">Bereich ausklappen/einklappen </button> +
-<collapse id="coll2">+
  
 Öffnen Sie den Scratch im Browser unter Ihnen steht es frei, die Programmierumgebung [[https://scratch.mit.edu/download |hier]] runterzuladen oder [[https://scratch.mit.edu/ |online]] zu programmieren und somit ein Scratchkonto zu erstellen. Öffnen Sie den Scratch im Browser unter Ihnen steht es frei, die Programmierumgebung [[https://scratch.mit.edu/download |hier]] runterzuladen oder [[https://scratch.mit.edu/ |online]] zu programmieren und somit ein Scratchkonto zu erstellen.
Zeile 41: Zeile 35:
 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.  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. 
 {{ :gf1:figuren_scratch.png?400|}} {{ :gf1:figuren_scratch.png?400|}}
-</collapse> 
-</callout> 
  
-<callout type="success" title="C. Scratch-Blöcke"> + 
-{{fa>angle-double-down}}<button collapse="coll3" type="link">Bereich ausklappen/einklappen </button> +==== Scratch-Blöcke ===
-<collapse id="coll3">+ 
  
 {{ :gf1:scratchbloecke.png?400|}} {{ :gf1:scratchbloecke.png?400|}}
Zeile 54: Zeile 47:
  
 ===Verarbeitungsblöcke=== ===Verarbeitungsblöcke===
-  * Die gewölbten **Ereignisblöcke** werden als **Code-Start-Element** genutzt. Beispielsweise, ein gelber Fühlblock +  * 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.   * **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 Stopp-Button in der Schaltfläche geklickt wird oder mit dem Block «Stoppe alles das Script beendet wird. +    * **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 allesdas Script beendet wird. 
-    * **Entscheidungsblöcke**: Entscheidungen werden mit Scratch mi tdem 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.+    * **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.   * **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.
  
Zeile 63: Zeile 56:
   * **Bewegungsblöcke**: Diese Blöcke zeigen die Ausgabe eines Programms, indem sie die Figuren auf der Bühne bewegen und steuern.   * **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   * **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
-</collapse> 
-</callout> 
  
-<callout type="success" title="C. Scratch-Spiel programmieren"> +==== Scratch-Spiel programmieren ===
-{{fa>angle-double-down}}<button collapse="coll3" type="link">Bereich ausklappen/einklappen </button> +
-<collapse id="coll3">+
 Es folgt eine Spezifikation des Spiels. Anschliessend wird das Spiel etappenweise mit Block-Programmierung programmiert. Zu jeder Etappe gibt es, falls gewünscht, eine genaue Anleitung. Es kann aber immer auch selbst auf eigene Faust innerhalb der einzelnen Etappen programmiert werden. Es folgt eine Spezifikation des Spiels. Anschliessend wird das Spiel etappenweise mit Block-Programmierung programmiert. Zu jeder Etappe gibt es, falls gewünscht, eine genaue Anleitung. Es kann aber immer auch selbst auf eigene Faust innerhalb der einzelnen Etappen programmiert werden.
  
 ===Die Spezifikation=== ===Die Spezifikation===
-Was soll das spiel können? Wie genau soll das Standardspiel genau funtionieren? Hier eine mögliche Beschreibung.+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.   * 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.    * 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.    * 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ält und wird während des Spiels abnehmen.\\+  * 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 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.
-{{ :gf1:flowchartlab1.png?direct&700 |}}+{{ :gf1:lab1aktivitaet.png?nolink&800 |}}
  
 +<WRAP nicebox green>
 ===Das Setting=== ===Das Setting===
 Durch diesen Programmteil wird die Spielumgebung und die Figuren festgelegt. Durch diesen Programmteil wird die Spielumgebung und die Figuren festgelegt.
Zeile 104: Zeile 95:
 | 2 | Die Steuerung wird wie folgt programmiert:   || | 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. || |:::|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 Scheife eine Bedingung "falls,... dann" und hier sollte die Bedingung "Taste Pfeil nach oben gedrückt?", dann ändere y um 10.||+|:::|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  | {{ :gf1:pfeiltasten_lab1.png?linkonly |Hinweis}} | |:::|Die zweite "falls,... dann"-Bedingung in der Schliefe sollte die Bedingung "Taste Pfeil nach unten gedrückt?", dann ändere y um -10  | {{ :gf1:pfeiltasten_lab1.png?linkonly |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.|| |:::|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.||
Zeile 125: Zeile 116:
 |:::|Wählen Sie in der Figurenliste die **Asteroiden-Figur** aus und fügen Sie einen Code in den nun wieder leeren Skriptbereich hinzu:|| |:::|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).|| |:::|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 Schaufe erzeugt weitere Asteroide, sogenannte Klons. Dabei sollten nach dem Erzeugen immer ein Zeitabstand-Moment gewartet werden.|{{ :gf1:asteroid1_lab1.png?linkonly |Hinweis}}|+|:::|Anschliessend wird eine Scheife fortlaufend wiederholt, diese Scheife erzeugt weitere Asteroide, sogenannte Klons. Dabei sollten nach dem Erzeugen immer ein Zeitabstand-Moment gewartet werden.|{{ :gf1:asteroid1_lab1.png?linkonly |Hinweis}}|
 |2|**Der Asteroidenhagel**|| |2|**Der Asteroidenhagel**||
 |:::|Nun soll ein Schwarm von Asteroiden entstehen. Dies ist vermutlich etwas knifflig. Hier einige Hinweise, die befolgt werden sollten.|| |:::|Nun soll ein Schwarm von Asteroiden entstehen. Dies ist vermutlich etwas knifflig. Hier einige Hinweise, die befolgt werden sollten.||
Zeile 148: Zeile 139:
   * Erweitern Sie das Spiel!   * Erweitern Sie das Spiel!
   * Speichern Sie das Spiel und laden Sie das Spiel (oder falls online den Link dazu) auf OneNote in Ihre Gruppe!   * 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 [[https://scratch.mit.edu/projects/731101193|so]] aussehen. +  * eine mögliche Lösung könnte [[https://scratch.mit.edu/projects/731101193|so]] aussehen. Ein möglicher Lösungscode ist auf OneNote. 
- +
  
 **Erweiterungsmöglichkeiten:** **Erweiterungsmöglichkeiten:**
Zeile 157: Zeile 147:
   * Lassen Sie die Asteroiden von ganz verschiedenen Positionen heranfliegen.   * Lassen Sie die Asteroiden von ganz verschiedenen Positionen heranfliegen.
   * eigene Ideen umsetzen.   * eigene Ideen umsetzen.
 +</WRAP>
 +
 +
  
 +**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 [[https://www.wiki.mathematix.ch/doku.php?id=gf1:lab_scratch#das_raumschiff |Raumschiff]] 
  
-</collapse> 
-</callout> 
 [[gf1:start|Zurück zur Startseite]] [[gf1:start|Zurück zur Startseite]]
  
  • gf1/lab_scratch.1663661902.txt.gz
  • Zuletzt geändert: 2022/09/20 10:18
  • von marroc