Die im Folgenden beschriebene Lektionenskizze basiert auf den „Grand Gestures“ von Jens Mönig, die in dem seit einigen Wochen verfügbaren Kurs „Get Coding with Snap! – Building Up to AI“ dokumentiert sind. Für die Umsetzung werden 2 – 4 Lektionen benötigt.
Gestenerkennung
Die Idee: Figuren, die mit einem Linienzug gezeichnet werden können (ohne Absetzen) sollen automatisch erkannt werden und jeweils eine passende Animation auslösen.
Die eigentliche Programmierung besteht aus zwei Teilen: Der technische Aspekt konzentriert sich auf den Algorithmus zur Erkennung einer gezeichneten Figur, der kreative Aspekt darauf, einzelne Figuren entsprechend zu animieren.
Die Programmierung
Die Programmierung kann abgesehen von wenigen Blöcken mit den Schülerinnen und Schüler schrittweise durchgeführt werden und umfasst keine besonders komplexen Schritte.
Zeichenfunktion implementieren
Als erstes sollen die Schülerinnen und Schüler in der Lage sein, eigene Figuren zu zeichnen. Dazu sind folgende Programmierschritte notwendig.
Im Bereich „Bühne“ (stage) wird aufgrund des Ereignisses Mausklick eine Nachricht an das Objekt (sprite) versendet.

Diese Mitteilung wird vom Objekt (sprite) aufgegriffen.
![]()
Um die Zeichnung anzufertigen, wird zuerst der Bildschirm gelöscht und dann folgt der „Stift“ von Snap den Bewegungen der Maus und hinterlässt somit eine entsprechende Spur.
Speichern einer Zeichnung
Im nächsten Schritt werden die einzelnen Positionen der Figur in der Variable „sketch“ gespeichert.
![]()
Wiedergeben einer Zeichnung
Im Starterpaket zu „Grand Gestures“ gibt es einen entsprechenden Block, mit dem die gezeichnete Figur wiedergegeben werden kann.
![]()
Für die Schülerinnen und Schüler ist es aber eindrücklicher, wenn man die Funktionalität dieses Blockes mit ihnen Schritt für Schritt erarbeitet.
![]()
Wenn man auf den im vorgegebenen Block vorhandenen warp-Block verzichtet, erscheint die Zeichnung nämlich nicht auf einen Schlag auf dem Bildschirm, sondern wird in der gleichen Art, wie sie die Schülerinnen und Schüler gezeichnet haben, schrittweise auf dem Bildschirm wiedergegeben. Das ist für die Schülerinnen und Schüler ein erster Aha-Moment.
„Normalisierung“ einer Zeichnung
In einem weiteren Schritt werden die Zeichnungen nun für den Vergleich untereinander vorbereitet und in einer weiteren Liste gespeichert, dabei spielt der folgende Block eine zentrale Rolle:
![]()
Der Block „normalisiert“ die Zeichnung, indem er die vorher in unregelmässigen Abständen gemessenen Punkte regelmässig entlang der Linie verteilt. Dies ist später wichtig, um verschiedene Zeichnungen vergleichen zu können.
Ein Vergleich zwischen der rohen und angepassten Zeichnung illustriert die Funktion:

links: Originalzeichnung; rechts: Zeichnung nach Anwendung des resample-Blocks
Die Anzahl der Punkte kann passend zur Komplexität der gezeichneten Figuren einstellen.
Für die Sekundarstufe I empfiehlt es sich, den resample-Block zu Verfügung zu stellen, da dessen Programmierung einige Zeit in Anspruch nimmt und vom eigentlichen Zweck des Programmierbeispiels eher ablenkt.
Speichern und Erkennen verschiedener Zeichnungen
Durch die Erweiterung des bisherigen Blockes zum Zeichnen von Linien können unterschiedliche Zeichnungen gespeichert und erkannt werden.
![]()
Der if-Block wird verwendet, damit für den Rest des Kernprogrammes möglichst wenig Blöcke benötigt werden. Wenn „recognize“ wahr ist, werden die gezeichneten Figuren gespeichert, wenn „recognize“ falsch ist, werden diese erkannt.
Mit dem ask-Block wird nach dem Namen einer Figur gefragt, anschliessend werden die Punkte einer einzelnen Zeichnung zusammen mit der Bezeichnung „drawings“ gespeichert.
Im else-Teil spielt der „recognize … in …“-Block die zentrale Rolle. Auch auf dessen Programmierung sollte auf der Sekundarstufe I verzichtet werden.
![]()
Der Block misst die Distanz zwischen der aktuell gezeichneten Figur und den Figuren in der Liste „drawings“, indem er jeweils den Abstand von Punktepaaren vergleicht. Der Name der Figur mit dem insgesamt kleinsten Abstand wird dann per „broadcast“ verschickt.
Um die Funktionsweise sichtbar zu machen, gibt es einen Zusatzblock, mit dem die Abstände der einzelnen Punktepaare als Vektoren dargestellt werden können.
![]()
Der Vergleich zwischen einem Rechteck und einem Dreieck sieht dann beispielsweise so aus.

Animation der erkannten Zeichnungen
Da der Name der erkannten Zeichnung versendet wird, kann dieser genutzt werden, um eine Animation zu starten, wobei das Gerüst immer gleich aussieht.
![]()
Damit das funktioniert, muss die Mitteilung im „when I receive“-Block entsprechend angepasst und die Animation selbst programmiert werden.
Blöcke zur Animation der Figuren findet man unter den Looks- und Motion-Blöcken, es können aber auch Sounds und andere Effekte eingebaut werden.
Als Starthilfe sind hier einige Animationsblöcke. Diese kann man einfach verwenden, anpassen oder als Inspiration verwenden.

Das Starter-Programm
Das Starter-Programm enthält die Definitionen der Variablen und alle Blöcke, die für die Programmierung der Aktivität benötigt werden: Gestenerkennung – Startdatei.
![]()
Wenn man möchte, dass die eigenen Zeichnungen nicht gelöscht werden, sollte man den Block „set drawings“ vom Startblock (Block mit grüner Fahne) lösen.
Verwendung in Moodle
Moodle hilft bei der Organisation in zweifacher Hinsicht. Einerseits kann mit dem Plugin Snap! submissions eine Aktivität angelegt werden, aus der Snap! direkt mit der entsprechenden Vorlage gestartet werden kann, andererseits können Schülerinnen und Schüler ihre Animationsblöcke in einer geeigneten Moodleaktivität wie „Forum“ oder „Database“ miteinander austauschen.
Erfahrungen aus dem Unterricht
Für die Umsetzung werden auf der Sekundarstufe I mindestens zwei Lektionen benötigt. Legt man viel Wert auf den kreativen Teil, bei dem die Schülerinnen und Schüler die gezeichneten Figuren aufwändig animieren oder gar zu einer Geschichte verknüpfen, sind 3 bis 4 Lektionen auf jeden Fall angemessen.
Ausserdem empfiehlt es sich, den Schülerinnen und Schülern spätestens am Ende der Lektion einen funktionierenden Zwischenstand der Programmierung zu Verfügung zu stellen. In Moodle sollte man dabei beachten, dass die xml-Dateien mit der Option „download“ zu Verfügung gestellt werden.
Insgesamt vermittelt „Grand Gestures“ wichtige technische Grundlagen, bietet die Basis für eine kreative Nutzung des verwendeten Algorithmus und leistet eine gute Überleitung zu weitergehenden Verfahren aus dem Bereich der künstlichen Intelligenz.
