Der bayerische Lehrplan der Jahrgangsstufe 9 sieht noch keine Objektreferenzen in Attributen vor. Dies schränkt die Programmierung umfangreicherer Spiele deutlich ein, mit etwas Geschick kann man aber doch zu ansprechenden Ergebnissen kommen.
Strategien:
PAppplet
und überschreibt deren Methoden setup
(wird 1-mal zu Beginn aufgerufen) und draw
(wird anschließend 30-mal pro Sekunde aufgerufen). Bei jedem Aufruf von draw
wird der Zeichenbereich gelöscht und muss komplett neu gezeichnet werden. Es gibt keine Klassen für graphische Objekte, sondern nur Zeichen-Methoden der Klasse PApplet
wie circle
, rectangle
usw. Der Zustand des Programms kann daher komplett in Attributen mit primitiven Datentypen gespeichert werden. Beispiele dafür finden Sie im Klett-Buch, zudem hier eine Einführung in die Processin-Programierung mit der Online-IDE. Figur
. Erbt man von ihr, so kann man durch Überschreiben der Methoden AktionAusführen
(wird 30-mal pro Sekunde aufgerufen) die Figur animieren und durch Überschreiben der Methoden TasteGedrückt
und MausGeklickt
auf Tastatur- und Mauseingaben reagieren. Die Interaktion mit anderen graphischen Objekten geschieht über die Methoden Berührt()
und Berührt(String farbe)
. Sie geben genau dann true zurück, wenn die Figur irgendein graphisches Objekt berührt bzw. eines mit der angegebenen Farbe. Hier eine Beschreibung, wie sich die Graphics and Games-API in der Online-IDE nutzen lässt. isKeyDown
, isKeyUp
, …). Diese Ideen haben die graphischen Klassen der Online-IDE übernommen, sie sind aber deutlich umfangreicher als die Pendants in Greenfoot und nicht vollständig kompatibel. Actor
. Sie besitzt eine überschreibbare Methode act
, die 30-mal pro Sekunde aufgerufen wird sowie Methoden onKeyDown
, onMouseMove
, usw. zum Reagieren auf Tastatur- und Mausereignisse. Zudem lässt sich der Status der Tasten auch mit isKeyDown(String taste)
jederzeit abfragen. Die Interaktion mit anderen graphischen Objekten gelingt mit der Methode collidesWithAnyShape()
, die genau dann true zurückgibt, wenn das graphische Objekt ein anderes berührt.
Auf der Seite https://info-am-gym.de/java/spacejunk.html zeigt Herr Schmitt seinen Schülerinnen und Schülern in vielen kleinen, liebevoll und detailreich beschriebenen Schritten, wie sie selbst ein kleines Multiplayer-Spiel programmieren können. Nach jedem größeren Schritt kann man den aktuellen Stand des Spiels ausprobieren und selbst verändern. Zudem gibt es immer wieder kleine interaktive Tests, mit denen die Schülerinnen und Schüler ihren Lernfortschritt überprüfen können.
Sehr sehenswert!
Die Klassen Ball und Schläger stehen in keiner Beziehung zueinander: Der Ball erkennt mit der Methode collidesWithAnyShape
, ob er mit einem der beiden Schläger zusammenprallt, an der y-Koordinate, ob er den oberen/unteren Rand berührt und an der x-Koordinate, ob ein Tor geschossen wurde.
Die Idee zu diesem Spiel kommt von Frau Dr. Siglinde Voss. Ein ähnliches Spiel auf Basis des Processing Frameworks findet sich im Klett-Buch.
Wie im Beispiel Pong oben haben auch hier die Klassen Hunter
, Prey
und Bomb
keine Beziehung zueinander. Sowohl die Prey
-Objekte als auch die Bomb
-Objekte erkennen mit der Methode collidesWithAnyShape()
, ob sie mit dem Hunter
-Objekt kollidieren. Das Prey
-Objekt zählt ggf. den Punktestand hoch und erzeugt neue Bomb
-Objekte.
Das ganze funktioniert natürlich nur, wenn das Prey-Objekt und die Bomben nur dorthin gesetzt werden wo noch nichts liegt. Dies wird durch die Methode moveToRandomLocation
in beiden Klassen bewirkt.