(Auf dieser Seite finden Sie technische Hinweise; für Fragen zu Ablauf, Sinn und Zweck konsultieren Sie die didaktischen Anmerkungen.)


Downloads - Das brauchen Sie für den Unterricht

Sie brauchen die Entwicklungsumgebung Greenfoot, die Sie hier downloaden können. Es gibt verschiedene Versionen, die USB- bzw. Java-only-Version läuft entspannt ohne Administratorrechte (nicht nur vom USB-Stick, sondern auch auf Schülerarbeitsplätzen).

Außerdem brauchen Sie den hus Struktogrammer (struktogrammer.ch). Anleitungen zum Start und außerdem Lösung des .jar-Problems in diesem Video. Spoiler: Sollte sich die *.jar-Datei auf Windows nicht per Doppelklick öffnen, benutzen Sie einfach den jarfix (Link: jarfix bei heise.de).
Sie können die Struktogramme natürlich auch mit einer anderen Software oder einem Online-Tool machen (wobei es structorizer.com seit Sommer 2022 (?) nicht mehr gibt). Der hus Struktogrammer ist schon der Beste, muss man klar sagen.

Wenn Sie das Projekt in der Oberstufe des Beruflichen Gymnasiums Baden-Württemberg benutzen, brauchen Sie noch die Operatorenliste für Struktogramme (aktuell Stand 09/2024 noch v 2.1 - PDF-Link auf schule-bw.de - Da sich die URLs dort schon mal ändern können, hier noch der Link auf die übergeordnete Seite).


Szenario

Seit Sommer 2024 gibt es nur noch ein Szenario für alles. Das laden Sie hier runter: EFM_SZENARIO_v3.zip.

Sie öffnen das mit der aktuellsten Greenfoot-Version (Stand 09/2024: Greenfoot 3.8.2), unter 3.7 wird es auf jeden Fall Ärger geben. Dann klicken Sie Run, anschließend klicken Sie auf eine Mission. Sollte mal gar nichts zu sehen sein, erzeugen Sie eine neue Instanz der World-Klasse Start (anders formuliert: Klicken Sie mit der rechten Maustaste auf die Klasse Start und wählen new Start()).

Um Peetie zu programmieren, klicken Sie die Klasse Peetie doppelt und bearbeiten diese Klasse.

Hinweise: Variablen nur als Instanzvariablen, niemals als lokale Variablen (denn da in vielen Aufgabenstellungen die act()-Schleife von Greenfoot durchläuft, würden lokale Variablen bei jedem act-Durchlauf neu initialisiert). Mehr dazu siehe unten.

Sound

Sie können Sounds per default an- oder ausschalten, indem Sie in der Klasse SzenarioKonfigurator die Zeile
public static boolean soundIsOn = true;
entsprechend ändern. Das sollte so ungefähr Zeile 95 sein.


Die Klasse Peetie

Die Schüler/innen arbeiten IMMER NUR in der Klasse Peetie, und zwar meistens nur in der _run()-Methode (Ausnahme: Variablenverwendung, s.u.). Peetie ist die einzige Klasse, die Stride verwendet. Die anderen Klassen müssen nicht angefasst werden (auch nicht von Lehrer/innen).

Peetie kann in der run-Methode zahlreiche Befehle verwenden (die er alle von AI_Robot erbt, z.B. Dinge wie geheRechts oder istFelsVoraus). Seit 2024 hat Peetie eine API doc, die können Sie erzeugen, wenn Sie im Szenario-Fenster Strg + G drücken, dann Packages klicken, dann AI_Robot auswählen. Diese API doc ist ganz gut kommentiert, für die komplizierteren Befehle (wie bspw. zur Textausgabe oder zum Einlesen von Daten) gibt es Anmerkungen und Code-Beispiele.

Eine Kurzform der API doc als Bilddatei finden Sie hier: Peeties API doc (png).

_run() ist  quasi der act()-Zyklus von peetie. In vielen Aufgabenstellungen läuft Peeties _run()-Methode nur einmal durch. Wir können also Peeties _run()-Methode verwenden, als wäre es die act()-Methode. 

Imperativ oder objektorientiert?

Greenfoot wurde ja quasi dafür gemacht, die Objektorientierung zu vermitteln (siehe z.B. unseren kompletten Video-Kursus OOP mit Greenfoot). In EFM verwenden wir Greenfoot aber nur deshalb, weil es uns die Möglichkeit gibt, die zu erlernenden Programmierstrukturen anschaulich-spielerisch umzusetzen (wie man weiß, haben wir es ja zuerst in Scratch probiert, das war aber eher nervig).

Deshalb programmieren wir Peetie nur imperativ - Wir verwenden nach Möglichkeit keine OOP-Aspekte wie Attribute oder Konstruktoren, sondern schreiben nur in der _run()-Methode Abfolgen von Kontrollstrukturen.

Ausnahme sind die Variablen: Würden wir Variablen in Peeties _run()-Methode deklarieren, würden sie dort bei jedem neuen Durchlauf neu deklariert (und damit auch initialisiert) werden. Das wäre in den Szenarien, bei denen die act-Methode durchläuft (und entsprechend Peeties run()-Methode mehrmals läuft), deadly, da die Variablen eben dauernd zurückgesetzt würden.

Also werden Variablen grundsätzlich als Attribute angelegt.


Nerd-Stuff

Hier ein paar Dinge, die eher ins Detail gehen:

Warum ist das Szenario so kompliziert?

Das Szenario ist deutlich komplizierter als das, was man sonst so mit Schüler/innen in Greenfoot macht. Das hat folgende Gründe:

  1. In manchen Missionen wollen wir die act-Methode nur einmal ausführen (z.B.: Peetie geht viermal nach rechts), in manchen jedoch durchlaufen lassen (z.B. Drohnenangriffe).
  2. Die blauen Hilfsknöpfe im Szenario links unten (s.u.) um den Sound an- und abzuschalten oder einen Hilfetext erhalten zu können können nur "gelistent" werden, wenn das Szenario läuft (also der act-Zyklus).
  3. Ärger macht auch die while-Schleife. Greenfoot hängt sich da gerne mal auf. Außerdem ist es nicht möglich, ein Szenario zu stoppen, BEVOR die while-Schleife komplett durchgelaufen ist. Deshalb gibt es für die Missionen mit der while-Schleife eine zusätzliche Abbruchbedingung, die die Schüler/innen aber nicht sehen.

Szenario-interne Steuerung über Buttons

Die blauen Steuerungsknöpfe sehen hilfreicher aus, als sie sind. In vielen Szenarien kann man sie gar nicht bedienen, da das Szenario nach Abarbeitung von Peeties Aufgaben stoppt, und wenn das Szenario nicht läuft, kann man auch den Knopf nicht listenen. Schade, bspw. die Hilfetexte, die über das ? zu erreichen sind, wären eigentlich schon ganz nützlich (Hilfetext mit Taste R wieder zum Verschwinden bringen).

Gut funktionieren die Knöpfe bei den Szenarien, wo die act-Methode durchläuft (z.B. Drohnen-Angriffe). Da kann man bspw. den Sound die ganze Zeit an- und abschalten.

Damit es keine Verwirrung gibt, sind die Knöpfe ausgeblendet, während Peetie arbeitet.

Eigentlich könnte man die fast rausschmeißen. Aber es war so eine böse Arbeit, die Knopf-Listener auf die Missionstypen draufzupflanzen, dass sie jetzt einfach mal da  bleiben. Vielleicht sind sie ja doch mal irgendwie nützlich.

Der Szenario-Konfigurator

Die Klasse SzenarioKonfigurator verwaltet die einzelnen Missionen. Sie können bei Bedarf im Szenariokonfigurator Änderungen vornehmen. Dazu müssen Sie wissen, dass es für jede Mission drei Aspekte gibt:

  1. Titel der Mission - der wird auf dem Startscreen angezeigt
  2. Missionsparameter - das ist der Monster-switch in der Methode initialisiereSzenario(…). Hier können Sie bspw. die Geschwindigkeit von Peetie einstellen: In Missionen, wo die _run-Methode mehrfach durchläuft, ist es ptSpeed, in den Missionen, wo die _run-Methode nur einmal läuft (bspw. beim Batteriensammeln), ist es delay.
  3. Weltaufbau - das ist die Methode objekteVerteilen(…). Hier werden Objekte wie Batterien oder Felsblöcke auf die Welt gesetzt.