Didaktische Hinweise Die Schülerinnen und Schüler sollen hier

Werbung
Didaktische Hinweise
Die Schülerinnen und Schüler sollen hier arbeitsteilig die unterschiedlichen Spielkarten
entwickeln. Dabei kann eine Vereinbarung darüber getroffen werden, welche Abmessung die
einzelne Karte haben soll und an welcher Stelle der Bezugspunkt (xPos/yPos) sein soll,
damit man die Karten z.B. mit einer for-Schleife im Fenster positionieren kann.
Das Projekt eignet sich auch zur Einführung der Polymorphie, die sich hier geradezu anbietet.
Daher gibt es auch hier ein Info mit Aufgaben, das auf das Projekt bezogen ist. Die Aufgaben
bestehen darin ein Testprogramm auszuprobieren und zu variieren um zu erfahren und
verstehen, wann und warum die Methode der Oberklasse bzw. der Unterklasse ausgeführt
wird. Im Testprogramm sind die Variablen der Klasse Spielkarte als protected deklariert.
Dies bewirkt, dass sie nur für Klassen im gleichen Paket (Ordner) oder Unterklassen (auch in
anderen Paketen) sichtbar sind. Eigentlich würde hier eine Einschränkung der Sichtbarkeit auf
Unterklassen im selben Paket benötigt. Diese ist in Java jedoch nicht vorgesehen.
Um die Daten besser zu kapseln wäre es auch hier (wie in anderen Projekten) möglich, in der
Klasse Spielkarte alle Variablen private zu deklarieren und für die Variablen, die in der
Unterkasse sichtbar sein müssen entsprechende get- und/oder set-Methoden. Da hier der
Fokus auf die Polymorphie gelegt wurde, haben wir dies an dieser Stelle zur Vereinfachung
weggelassen.
Auf die explizite Deklaration der Methoden als public wurde hier verzichtet, da sie auch
ohne dies für Klasen im selben Ordner sichtbar sind.
Das Mischen der Karten erfolgt hier durch beliebig häufiges Vertauschen von Kartenobjekten
im Array. Um das Vertauschen zu Visualisieren, gibt es zwei Präsentationen, bei denen es um
den Unterschied zwischen dem Vertauschen von Objekten und dem Vertauschen von
einfachen Daten geht.
Die Karten können ihren kartenTyp in einer Variablen speichern, so dass festgestellt werden
kann, ob sie von der gleichen (Unter)-Klasse sind, indem man die Abfrage macht:
if(wartendeKarte.getKartentyp().equals(kartenFeld[i].getKartentyp()))
Stattdessen kann man zwar auch die Abfrage so formulieren:
if
(wartendeKarte.getClass().getName().equals(karte[i].getClass().getName()))
Darauf können die Schülerinnen und Schüler wohl kaum selbst kommen, so dass man ihnen
das erklären müsste.
Erweiterungen des Spiels gegenüber der einfachsten Lösung könnten sein:
 Einbauen einer Zeitmessung mit Hilfe des Zeitmanagers, der für diesen Zweck eigens
geeignete Methoden enthält. Die gemessene Zeit kann dann ausgegeben werden. Wer
die kürzeste Zeit benötigt gewinnt.
 Ergänzen einer reset-Methode, die die Ausgangsbedingungen wiederherstellt und das
Spielen weiterer Runden erlaubt. Hier kann man diskutieren, die Initialisierungen aus
dem Konstruktor herauszunehmen, die wieder vorgenommen werden müssen und sie
stattdessen in die reset-Methode zu verlegen, welche ihrerseits dann im Konstruktor
aufgerufen wird.
 Das Spiel für mehrere Spieler erweitern, deren Spielzeiten aufaddiert und am Ende des
Spiels miteinander verglichen werden.
Herunterladen