Simulationen mit Snap!

Snap! eignet sich auch dafür, einfache Simulationen durchzuführen. Das vorliegende Beispiel zeigt die Simulation einer Population, deren Verhalten von den vorhandenen Ressourcen abhängt.

Kleine Lebewesen sind auf der Futtersuche. Die Zahlen zeigen an, wie viel sie schon gefressen haben.

Die Programmierung dieser Welt wird in drei Schritten aufgebaut:

  1. Die Welt schafft die Umgebung für die Lebewesen.
  2. Das Futter dient als Ressource für die Lebewesen.
  3. Die Lebewesen sind auf der Suche nach Futter. Der Erfolg dabei entscheidet über Tod, Weiterleben oder Vermehrung.

Die Welt

Die Welt wird durch den Bildschirm begrenzt und gibt den Zeittakt vor. Alle sechs Sekunden beginnt in der Welt ein neuer Tag. Der Tagesanbruch wird in Snap! durch eine Nachricht an alle mitgeteilt.

Die Welt verhält sich zyklisch und der Tagesanbruch wird durch eine entsprechende Mitteilung angekündigt.

Sobald das Programm (grüne Flagge) gestartet wird, beginnt das Programm ein Hintergrundgeräusch (Wellen) abzuspielen. Dieser Aspekt kann auch weggelassen werden, macht die Simulation aber stimmungsvoller.

Anschliessend wird in einer Endlosschleife der Tagesablauf programmiert: Im Laufe der Zeit wird der Hintergrund immer dunkler und zu Beginn jedes Tages wird mit „broadcast“ eine Mitteilung versendet, welche sowohl die Futterquelle als auch die Lebewesen beeinflusst.

Dieser Ansatz unterscheidet sich von vielen Simulationsprogrammen, wo jeweils eine gewisse Anzahl von Schritten für jedes Objekt der Simulation berechnet wird. Die Objektorientierung von Snap! erlaubt hier die parallele Abarbeitung von Befehlen. Es wäre jedoch auch möglich, einen traditionelleren Ansatz zu verfolgen.

Das Futter

Im vorliegenden Programm verhält sich das Futter (die Ressource) passiv. Zu Beginn eines neuen Tages werden Futterstücke zufällig in der Welt verteilt. Sobald sie in Berührung mit einem Lebewesen kommen, werden sie gefressen.

Das Futter wird jeweils zu Tagesbeginn neu in der Welt verteilt.

Das eigentliche Programm besteht aus vier Teilen, die abhängig von Ereignissen sind:

  1. Zu Beginn des Programms wird das bereits vorhandene Futterobjekt versteckt.
  2. Wenn ein neuer Tag beginnt, werden alle alten Futterobjekte gelöscht und Klone des Futterobjekts erzeugt. Klone sind Objekte, welche alle Eigenschaften des ursprünglichen Objekts erben.
  3. Jeder Klon wird an einer zufälligen Position auf dem Bildschirm angezeigt.
  4. Wenn der Klon mit einem Lebewesen in Berührung kommt, wird er gelöscht.

Der in Snap! mögliche Ansatz des Klonens erlaubt es, die Programmierung sehr einfach zu halten. Ausserdem kann das Verhalten der Klone an zentraler Stelle sehr einfach angepasst werden. So wären nur wenige Befehle im Block „When I start as a clone“ notwendig, um die Futterteilchen in der Welt herumschwimmen zu lassen.

Die bereits vorhandene Variable „lifespan“ könnte dazu genutzt werden, dass die Futterteilchen mehr als einen Tag zu Verfügung stehen.

Die Lebewesen

Die Lebewesen irren zufällig in der Welt herum (random walk). Wenn sie auf den Bildschirmrand treffen, drehen sie sich um und setzen ihre Bewegung fort.

In der aktuellen Programmierung sind die Lebewesen nicht in der Lage, aktiv nach Futter zu suchen, sondern sie finden dieses zufällig.

Auch die Programmierung der Lebewesen gliedert sich in vier Teile, welche abhängig von Ereignissen sind:

  1. Bei Programmstart wird das eigentliche Objekt versteckt und Klone werden erzeugt.
  2. Jeder Klon wird initialisiert, begibt sich an eine zufällige Stelle auf dem Bildschirm und wandert zufällig herum. Die Anzahl der bereits gefressenen Futterteilchen wird laufend angezeigt. Entfernt man den Befehl „say(food)“ fällt diese Anzeige weg.
  3. Wenn ein Lebewesen auf ein Futterteilchen stösst, wird die Variable „food“ erhöht.
  4. Zu Tagesbeginn sterben alle Lebewesen aus, welche über keine Futterreserven mehr verfügen. Wenn sie genügend gefressen haben, vermehren sie sich.

Vorteile von Snap! bei Simulationen

Durch die objektorientierte Programmierung, die Möglichkeit Nachrichten zu verschicken und die vorhandenen Befehle (z.B. zu Kollisionen) fällt das Schreiben einfacher Simulationen in Snap! leicht. Hat man einmal verstanden, wie eine solche einfache Simulation funktioniert, kann man diese durch zusätzliche Objekte komplexer gestalten oder zu einem interaktiven Spiel ausbauen.

Dabei kann es sich lohnen, die Simulation erst einmal mit Hilfe von realen Objekten durchzuspielen (z.B. mit Legosteinen), damit man eine bessere Vorstellung davon erhält, welche Ereignisse notwendig sind, damit die Programmierung funktioniert. Beim Ausprobieren der Simulation lohnt es sich auf jeden Fall, mit kleinen Anzahlen von Objekten zu beginnen. Dies vereinfacht es nicht nur, den Überblick zu behalten, sondern funktioniert auf leistungsschwachen Geräten auch reibungsloser.

Verwendung im Unterricht

Simulationen können im Unterricht breit eingesetzt werden. Während das vorliegende Beispiel sich vor allem für die Biologie eignet, kann die Simulation von Teilchen wichtige Konzepte der Physik veranschaulichen. Baut man die Simulation zu einem interaktiven Spiel aus, wird zusätzlich das Erzählen von Geschichten wichtig (Deutsch). Die Gestaltung der Futterquellen und der Lebewesen kann sehr einfach erfolgen, je nach Interesse der Schülerinnen und Schüler kann diese auch bis hin zu animierten Objekten ausgebaut werden (Bildnerisches Gestalten).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert