Lehrer
Sie sind Lehrer und möchten sich informieren, wie die Engine in den Informatik-Unterricht integriert werden kann? Dann sind Sie hier richtig!
Inhaltsverzeichnis
Das Wichtigste zuerst
- Die Core-Engine ist zur Entwicklung von 2D-Spielen gedacht und setzt bereits elementare Programmier-Kenntnisse voraus. Alle Features der Core-Variante werden in unserem Tutorial-Bereich detailliert beschrieben.
- Die EDU-Variante wurde speziell für Schüler ohne Grundkenntnisse entwickelt. Sie stellt eine "abgespeckte" und methodisch aufbereitete Variante der Core-Engine dar. Der Umgang mit der Edu-Variante wird in unserem Unterrichts-Bereich beschrieben.
- Version 2.x ist veraltet und sollte im Unterricht nicht mehr verwendet werden!
- Aktuell und stabil ist derzeit die Version 3.x. Diese Version wird für Unterrichtszwecke "eingefroren" um Irritationen im Unterricht nach Änderungen zu vermeiden.
- Version 4 ist derzeit in Entwicklung, wird viele neue Features enthalten und vor Allem den bekannten syntaktischen Inkonsistenzen zwischen Core- und Edu-Variante den Garaus machen.
- Die im Unterrichts-Bereich angebotenen Materialien beziehen sich auf die Version 3.x.
- Sie können die Engine-Alpha sehr einfach in BlueJ einbinden. Legen Sie hierzu am einfachsten im BlueJ-Projekt-Ordner einen Ordner mit der Bezeichnung +libs an und kopieren Sie die engine.alpha.jar dort hinein. (BlueJ-Neustart oder Neustart der JVM erforderlich)
- Zusätzlich benötigte Dateien wie Grafiken, Sounds etc. kopieren Sie einfach direkt in den BlueJ-Projekt-Ordner. Der Aufruf kann dann ohne Pfad-Angabe erfolgen.
- Vererbung ist eine der grundlegenden Arbeits-Techniken und entgegen der Annhame einiger Hochschul-Didaktiker überhaupt nicht kompliziert (wenn man sie nicht künstlich kompliziert macht) - im Gegenteil! Sie spart gerade am Anfang viel verwirrenden Code!
Am Anfang war die Idee
Spiele programmieren war schon immer ein Thema, das Schüler im Informatik-Unterricht angesprochen hat. Aber nur all zu schnell war die erste Begeisterung bei den Schülern verflogen und der Frust bzgl. technischer Schwierigkeiten überwog. Die Engine Alpha selbst entstand ursprünglich aus vielen - oft wie oben beschrieben missglückten - Unterrichtseinheiten in verschiedenen Jahrgangsstufen. Das Ziel war das Eliminieren von sprachspezifischen, technischen Schwierigkeiten indem diese in sprechend benannte Klassen mit einfachen Schnittstellen quasi unsichtbar "verpackt" wurden. Immer wiederkehrende Probleme und Aufgaben wurden in einem Baukasten-Prinzip zusammengetragen. Immer wiederkehrende Verständnis-Probleme der Schüler trugen nach und nach zur methodisch und didaktisch immer weiter aufbereiteten und auf das Wesentliche bzgl. eines Verstehens der zugrunde liegenden Konzepte reduzierten EDU-Variante der Engine Alpha bei. Rund um diese recht einfachen Bausteine entstanden in über mehr als 10 Jahren Unterrichtseinheiten, welche sich zu bewähren schienen. Immer mehr Kollegen, aber auch Referendare, Studenten und Schüler brachten und bringen kreative Ideen mit ein.
Das didaktische Konzept
Grundlegende Idee hinter dem Aufbau der EDU-Variante der Engine Alpha ist, dass die Schüler in jeden Themen-Bereich sukzessive vom ersten grundlegenden Verständnis des Prinzips über vertiefte Betrachtungen hin zum technischen Verständnis angeleitet werden können. Kein Schüler muss technische Details aus der Java-API kennen um dem Unterricht zu folgen, auch der Lehrer zunächst nicht. Möchte man nicht nur den vorbereiteten Unterrichtseinheiten folgen sondern selbst kreative Ideen umsetzen, so sollte man sich mit der eigentlichen (nicht EDU) Engine Alpha auseinander setzen. Dies geschieht am einfachsten, indem man neben den Code-Beispielen im Wiki auch besonders den freien Quellcode der EDU-Variante der Engine Alpha durchliest. Er zeigt schon mehr technische Details bzgl. der zugrunde liegenden Prinzipien, aber hält die rein technischen Java-Details noch außen vor. Diese Ebene reicht, um mit der Engine Alpha seiner Phantasie als Schüler und insbesondere als Lehrer freien Lauf zu lassen.
Für technisch sehr interessierte Schüler oder Lehrer stellt der Quellcode der eigentlichen (nicht EDU) Engine Alpha einen großen und weitläufigen Fundus dar für Prinzipien, welche später in der Oberstufe oder auch erst im Studium vermittelt werden. Der Code ist durchgängig äußerst ausführlich und verständlich dokumentiert. Man findet sehr viele bekannte Code-Patterns (Singleton, Observer, Composite, ...) in funktionierenden Code-Beispielen vor.
Doch das Wichtigste beim Unterrichten mit der Engine-Alpha ist:
Texten Sie die Schüler nicht zu lange mit Theorie voll! Lassen Sie sie recht zügig selbst aktiv werden. Planen Sie immer wieder Handlungs-Phasen für Schüler ein. Lerning by doing oder wie Maria Montessori es gesagt hätte: Hilf mir, es selbst zu tun!.
Programmieren lernen ist wie schwimmen lernen: Man kann so lange zusehen und darüber lesen wie man möchte ... lernen wird man es nur, indem man es einfach unter Anleitung immer wieder selbst probiert, bis es endlich klappt! Erinnern Sie Ihre Schüler bei frustierenden Erlebnissen immer wieder daran, wie sie Laufen, Sprechen, Schreiben, Schwimmen, ... gelernt haben. Das hat auch nicht sofort geklappt und ist heute doch selbstverständlich geworden und man denkt nicht mal mehr nach, während man es heute tut ... Verlieren Sie gegenüber den Schülern nie die Geduld ... Ihre Eltern haben Ihnen als Kind auch immer wieder aufgeholfen, wenn Sie hingefallen sind und sie wurden dabei wohl auch nicht geschimpft sondern weiter motiviert!
Unterrichtsmaterial
Die Unterrichtseinheiten, welche auf der Web-Präsenz zu finden sind, stellen erprobte und bewährte Sequenzen dar, welche von unterschiedlichen Lehrern ersonnen und angefertigt wurden. Stetig werden sie bei jedem weiteren Einsatz - basierend auf Kritik und Anregung von Schülern und Lehrern - immer wieder ergänzt und verbessert.
Es gibt ein durchgängiges Unterrichtskonzept, das versucht, den Lehrplan der 10. Jahrgangsstufe des bayerischen Gymnasiums abzudecken. Entsprechend gibt es auch einige angeleitete Unterrichtsprojekte über mehrere Stunden, welche von den Schülern in Einzel- oder auch Gruppenarbeit bewerkstelligt werden können. Einheiten zur Vertiefung einzelner Themengebiete (Vererbung, Arrays, ...) sind ebenso vorhanden.
Eine gesteigerte Motivation der Schüler setzt allerdings voraus, dass jeder Lehrer die Aufträge der Schüler ausführlich selbst durchgeführt haben muss um im Unterricht souverän auf z.B. Compiler-Meldungen oder bei Fragen bzgl. der konkreten Realisierung in Java reagieren zu können.
Jeder, der dieses Material benutzt, ist ausdrücklich dazu aufgerufen, Kritik, Erfahrungen, Anregungen, Zusatzmaterial, etc. an uns zurück zu senden und damit selbst aktiv zur Erweiterung und Qualitätsverbesserung dieser Unterrichtssequenzen beizutragen.
Alle Projekt-Vorlagen, von denen im Unterrichts-Skript gesprochen wird, können vom Lehrer auch selbst angefertigt werden. Hierzu lädt man sich die EDU-Klassen herunter und löscht in dem Projekt die Klassen, die nicht benötigt werden.
Das Unterrichts-Material von Michael Ganshorn unterliegt prinzipiell dem Urheberrecht.
Der Autor gesteht allerdings folgende Rechte ohne weitere Nachfrage zu:
- Absolut jeder darf das Unterrichts-Material für den persönlichen Gebrauch unentgeltlich verwenden.
- Jeder Lehrkraft einer staatlichen oder staatlich anerkannten Schule steht es frei, die Unterrichts-Materialien ihren Schülern unentgeltlich und unverändert zur Verfügung zu stellen. Voraussetzung hierfür ist ein Verweis auf unsere Web-Seite (engine-alpha.org).
- Jede darüber hinausgehende kommerzielle Verwendung des Unterrichts-Materials oder auch Teilen davon (außer unterrichtliche Nutzung in staatlichen oder staatlich anerkannten Schulen) z.B für Verlage / Autoren bedarf einer ausdrücklichen Genehmigung durch den Autor, die bei Interesse gerne individuell ausgehandelt wird.
- Veränderungen des Unterrichts-Materials sind zulässig und erwünscht, allerdings muss eine kostenfreie Kopie an den Autor zurück fließen.
Bei Verstößen behalte ich mir rechtliche Schritte vor!
Einstieg als Lehrer
- Vor- und Nachteile der Engine-Nutzung im Unterricht
- Es gibt verschiedenene Arten der Engine mit verschiedenem Anspruchsgrad, beginnend bei grundlegendem Wissen über Klassen/Objekte, aber ohne echte Programmierkenntnisse.
Beispielprojekte
Hier eine kleine Auswahl von angeleiteten Projekten:
- Projekt: Ping-Pong
- Projekt: Staubsauger-Roboter
- Projekt: Kamele
F A Q s
Wo gehobelt wird, da fallen Späne. Deshalb ereignen sich immer wieder einmal Situationen, in denen die Engine-Alpha (vermeintlich) nicht richtig funktioniert. Für die häufigsten "Probleme" haben wir hier die Lösungen zusammen getragen.
Wie finde ich die Version der verwendeten Engine-Alpha heraus?
Doppel-klicken Sie auf die engine.alpha.jar. Es sollte ein Fenster erscheinen mit der Versions- und Build-Nummer. Wenn kein solches Fenster erscheint, versuchen Sie es mit Rechts-klick und "öffnen mit". Wählen Sie Java Runtime. Sollte auch das nicht klappen, so verwenden Sie eine sehr alte Version!
Das Grafik-Fenster bleibt schwarz
Ich erzeuge ein Objekt, das eigentlich im Grafik-Fenster angezeigt werden sollte, aber es erscheint nicht. Ich sehe nur in BlueJ die entsprechende Objekt-Karte.
Starten Sie die Java-Virtual-Machine neu. Klicken Sie hierzu in BlueJ mit der rechten Maus-Taste auf den schraffierten Balken (links unten) und anschließend mit der linken Maus-Taste auf das erscheinende Fähnchen.
Ich erhalte ständig unerklärliche NullPointerExceptions
Immer wenn ich mein Spiel starte werden in der BlueJ-Konsole NullPointerExceptions angezeigt. Oft bleibt das Spiel stehen, bevor es eigentlich beginnt.
Der Grund ist in der Regel die Verwendung der EDU-Klasse SPIEL. Diese startet den Ticker sofort nach der Initialisierung. Wenn Sie viele Objekte im Konstruktor Ihres Spiels erzeugen, dann werden diese möglicherweise in der Methode tick() angesprochen, bevor sie erzeugt wurden. Schreiben Sie im Konstruktor Ihrer Klasse als zweiten Befehl (nach Aufruf des Super-Konstruktors) den Befehl tickerStoppen(). Arbeiten Sie nun Ihren Konstruktor ab wie bisher. Als allerletzten Befehl im Konstruktor Ihres Spiels schreiben Sie tickerNeuStarten(...). Ersetzen Sie die Punkte in den runden Klammern durch einen Intervall-Wert in Millisekunden.
Einige Grafik-Objekte reagieren nicht / falsch auf Methodenaufrufe
Der Compiler meldet keine Fehler und ich finde auch keine Logik-Fehler. Methoden-Aufrufe zum Ändern / Anzeigen der Farbe, Größe, des Mittelpunkts etc. haben anscheinend keine Wirkung.
Sie verwenden vermutlich EDU-Klassen, rufen aber (geerbte) Methoden der Core-Engine auf. Wegen der unterschiedlichen Art der grafischen Darstellung sind diese beiden Varianten nicht kompatibel zueinander. Achten Sie peinlichst genau auf die Syntax: nenne...() und setze...(...) sind die einzig funktionierenden Methoden-Aufrufe der Edu-Variante. Ähnlich lautende Aufrufe wie set...(...), get...(), farbeSetzen(...) usw. gibt es leider in der Vererbungs-Hierarchie. Sie zeigen aber in der EDU-Variante keine Wirkung.
Vererbung ganz am Anfang - geht das gut?
JA, aus tiefster Überzuegung und jahrelanger Praxis heraus JA! Wenn ich von VOGEL erbe, bin ich ein Vogel und deshalb kann ich jetzt einfach fliegen - ich habe die entsprechnde Methode nämlich mit geerbt. Haben Sie schon einmal Kindern beim Spielen zugesehen? Kinder besitzen so viel Pahtasie, dass sie ganz selbstverständlich fliegen können, wenn sie VOGEL spielen. Nutzen Sie einfach die kindliche Naivität aus. Kinder denken weit weniger kompliziert als Erwachsene und kommen gar nicht auf all zu komplizierte Fragen rund um die Vererbung (auch wenn sie sonst vieles hinterfragen).
Kontakt
Hinter dem Unterrichts-Konzept mit der Engine-Alpha steht mittlerweile eine sehr aktive Gemeinde von Lehrern, Studenten und Schülern. Interessierte Lehrer können sich wenden an:
Adalbert-Stifter-Gymnasium Passau
mike underscore gans at yahoo dot de