Aber jetzt ist ein großer Schritt in unserem Projekt getan: Die eigentliche Programmierung des Quellcodes, welcher unsere Javakonda erscheinen und auf dem Spielfeld hin- und her kriechen lässt!
Auch haben wir unser Projekt in Hinblick auf die (hoffentlich) korrekte Objektorientierung entscheidend auf Vordermann bringen können. Jetzt haben wir jeweils eine Klasse für die Schlangensegmente (Segment.java), eine für die Schlange selbst (Schlange.java), eine für die Futterelemente (Futter.java) und natürlich unsere ursprünglichen Klassen Start.java, JavakondaControl.java, JavakondaGui.java und JavakondaSpielfeld.java. So bleibt alles übersichtlich und es ist auch leichter für uns, sich zu orientieren und die Abläufe nachzuvollziehen.
Nun zur kurzen Beschreibung der drei neu hinzu gekommenen Klassen:
Segment.java: Hier sind alle nötigen Elemente zu finden, welche die Segmente ausmachen. So wird hier zum Beispiel die Größe und Farbe jedes Segmentes bestimmt und definiert und wohin sich die einzelnen Segmente bewegen sollen, wenn eine bestimmte Richtung gegeben ist. Die abschließende Programmierung für die Richtungssteuerung durch die/den Benutzer_in findet sich allerdings in der Klasse JavakondaSpielfeld.java.
Schlange.java: In dieser Klasse wird auf die Klasse Segment.java verwiesen und die einzelnen Segmente in eine „LinkedList“ gepackt. Wie wir durch ein Java-Tutorium im Internet herausgefunden haben, stehen alle Elemente innerhalb einer LinkedList (oder auch „Verkettete Liste“) in Verbindung zum jeweiligen Vorgängerelement. So müssen beim Löschen eines Elementes nur die Verweise auf die Nachbarn geändert werden, was ein großer Vorteil ist, wenn häufiger Daten eingefügt oder gelöscht werden, was bei unserer Schlange ja der Fall ist. (Quelle: http://www.java-tutorial.org/linkedlist.html, Stand 24.09.2012) Des Weiteren stehen in dieser Klasse Befehle, um die Schlange durch Aneinanderreihen der einzelnen Segmente zu erzeugen und anschließend zu zeichnen und eine Richtungsermittlung der Schlange.
In der abschließenden „prüfen()“-Methode werden verschiedene Dinge überprüft, wie zum Beispiel, ob der Kopf der Schlange ein anderes Körperteil berührt. In der nächsten Zeit sollen hier auch noch andere Überprüfungen entstehen, wie zum Beispiel, ob die Schlange den Spielfeldrand oder ein Futterelement berührt.
Futter.java: Hier ist die Größe der Futterelemente bestimmt und anschließend ein Befehl für das Zeichnen programmiert worden. Die Futterelemente sind allerdings noch nicht im Spiel verortet, das heißt, bisher werden sie noch nicht angezeigt.
Natürlich hat sich auch in der Klasse JavakondaSpielfeld.java einiges getan, die Schlange wurde hier verortet, da sie sich ja auf diesem Spielfeld bewegen soll. Dazu wurde zuerst einmal die Methode „Spiel starten()“ angepasst, diese enthält nun die Methoden
„schlangeErstellen()“ und „losGehts()“.
In der „schlangeErstellen()“-Methode wurde der Befehl „schlange.erzuegen()“ eingefügt, welcher auf die erstellen-Methode in der Klasse schlange.java hinweist und die „losGehts()“-Methode enthält jetzt den Befehl „uhr.neuStarten()“. Dieser verweist auf einen neu eingebauten Thread, welcher am Ende der JavakondaSpielfeld-Klasse steht und welcher einen Timer beinhaltet, der im Hintergrund läuft. So soll die Bewegung der Schlange erzeugt werden, denn dieser Thread ist so programmiert, dass sich das JavakondaSpielfeld immer in einem bestimmten Zeitabstand (hier im Moment alle 100 Millisekunden) aktualisieren soll. Was genau bei dieser Aktualisierung passieren soll, ist wiederum in der JavakondaSpielfeld-Klasse in der „aktualisieren()“-Methode festgelegt. Hier soll sich die Schlange zuerst bewegen und dann soll das Spielfeld neu gezeichnet werden, um zu verhindern, dass die Schlange an ihrer ursprünglichen Position gezeichnet bleibt. Dann wird die neu positionierte Schlange selbst in der darauffolgenden „paint()“-Methode neu gezeichnet.
Zu guter Letzt legt die „keyPressed()“-Methode fest, was passieren soll, wenn eine bestimmte Pfeiltaste gedrückt wurde. So ähnlich wurde dies zwar schon in der Klasse Segment.java programmiert, jedoch wurden dort quasi nur die Bezeichnungen (HOCH, RUNTER, LINKS, RECHTS) für die Richtungen festgelegt und in welche Richtung sich die Elemente bewegen sollen, es war aber noch nötig, in der JavakondaSpielfeld-Klasse die offiziellen Bezeichnungen für die Richtungstasten zu verwenden (VK_UP,VK_DOWN, VK_RIGHT, VK_LEFT) und diese dann mit den von uns benannten Richtungen zu verknüpfen.
Und so sieht unser Spiel bis jetzt aus:
Die Anfangsschlange setzt sich also aus drei Schlangensegmenten zusammen und bewegt sich nach rechts. Um ein Spiel anzufangen, muss man nun zuerst im Menü auf den Menüpunkt „Neues Spiel“ klicken. So soll verhindert werden, dass die Schlange nach dem Öffnen des Fensters sofort losläuft und die_der Benutzer_in eventuell keine Zeit hat, rechtzeitig zu reagieren, bevor die Schlange die Spielfeldbegrenzung trifft oder ähnliches.
Zusammengefasst ist nun folgendes entstanden: Die Programmierung und Erzeugung/Zeichnung der Schlange, die Bewegung der Schlange und deren Steuerung durch die_den Benutzer_in sowie das Zurückversetzen in die Anfangsposition bei Klick auf „Neues Spiel“.
Die nächsten Schritte in unserem Projekt werden nun folgende sein:
- Begrenzung einrichten (Überprüfung, ob die Schlange den Spielfeldrand berührt und die Programmierung einer Game Over – Anzeige, wenn dies der Fall ist)
- Schwierigkeitsgrad festlegen
- Futterelemente integrieren, sodass diese zufällig auf dem Spielfeld erscheinen



Keine Kommentare:
Kommentar veröffentlichen