Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Zum Projekt:
- Wir haben das Spiel Viergewinnt in Java mittel Model-View-Control pattern implementiert.
- Das Spiel hat 7 Spalten und 6 Zeilen.
- Mit Linksklick auf ein Feld setzt man einen Stein.
- Per Rechtsklick kann der Stein eines Spielers in der untersten Zeile entfernt werden, wodurch
- alle weiteren Steine darübe um eine Position nach unten fallen.
- Es spielen 2 Spieler, Rot und Gelb.
- In unserer Projektstruktur findet man folgende Packages und Klassen:
- Default:
- Main Klasse mit Main Methode
- Package View:
- Klasse SpielbrettView :
- Hat alle relevanten View Variablen (Jframe, Grid usw)
- Es enthält das Haupt JFrame frame in welchem alle weiteren Komponenten eingepflegt werden.
- Das gameField repräsentiert ein zweidimensionales Array von Feldern/Zellen.
- JLabel whoWOn gibt an welcher Spieler gewonnen hat.
- JLabel whosTurn gibt an welcher Spieler als nächstes dran ist.
- Jlabel PopoutInfo und PopoutInfoTwo weisen den Spieler darauf hin, dass die Popout funktion mit einem Rechtsklick benutzt wird.
- JButton clear ist ein Button zum neustarten des Spiels.
- Der String playerTurn enthält den Spielernamen welcher den nächsten Zug hat (Gelb oder Rot)
- Package Model:
- Klasse Feld:
- Repräsentiert eine einzelne Zelle. Kann die Farben Gelb (Spieler Gelb) Rot (Spieler Rot) und Blau (leeres Feld) haben.
- Das färben der Felder sowie das zuweisen der Spielzüge findet in dieser Klasse statt.
- Klasse SpielbrettModel:
- enthält alle fürs Spielfeld relevanten Eigenschaften.
- -ein zweidimensionales String array (Belegt) welches die Zustände Rot, Gelb und leer haben kann.
- -ein weiteres zweidimensionales Boolean Array (Frei) welches angibt ob ein Feld frei oder Besetzt ist,
- -Boolean istZugBeginn welches angibt ob es sich beim Zug um den ersten Zug handelt und im weiteren wird diese Variable verwendet um den
- Zug an Spieler Gelb oder Rot zuzuweisen. Falls istZugbeginn = true ist Spieler Rot dran und bei jedem einwerfen und Popout wird dies
- entsprechend geändert.
- -Boolean Win gibt an ob ein Spieler gewonnen hat.
- Die zwei dimensionalen Arrays werden mit den Größen 6x7 initialisiert. 7 Spalten , 6 Zeilen.
- Klasse ClickLogik:
- enthält Listener welche erkennen wenn ein Spieler auf eine Spalte rechts- oder linksklickt.
- Im Falle eines linksklicks wird ein Stein in die unterstmögliche Zeile der geklickten Spalte platziert.
- Im Falle eines Rechtsklicks wird geprüft , ob sich auf der untersten Zeile in der Spalte auf die der Spieler geklickt hat, ein
- Stein seiner Farbe befindet. Falls dies der Fall ist wird dieser Stein gelöscht und alle Steine über dem gelöschten
- Stein springen um eine Position nach unten. Dies wird als ein Zug gewertet.
- Nach jedem Zug wird die checkWin methode aufgerufen welche überprüft ob ein Spieler ermittelt werden konnte.
- In der checkWin Methode wird überprüft ob eine horizontale, vertikale oder schräge Linie von 4 gleichfarbigen Steinen gesetzt wurde.
- Bei einem wird wird das Spiel mittels endGame() beendet. Es können keine weiteren Züge getätigt werden und der
- Spieler wird im whoWon JPanel angezeigt.
- Mittels dem Neustart Button kann ein neues Spiel gestartet werden.
- Klasse ClearButtonListender:
- Erkennt wenn auf den JButton "Neustart" (clear) geklickt wurde.
- Alle felder werden auf leer und blau gesetzt.
- Win wird auf false gesetzt und der nächste Spieler am Zug ist Rot da die istZugbeginn Variable auf true gesetzt wird.
- Package Control:
- Klasse Controller:
- Verbindet View und Model und enthält jeweils ein Objekt der beiden.
- Initialisiert die beiden zweidimensionalen Arrays aus dem SpielbrettModel.
- Weist jeder spielFeld Zelle einen MouseListender (ClickLogik) zu.
- Initialisiert den View.
- Weist dem JButton clear einen ActionListener (ClearButtonListener) zu.
- Wird in der Main methode verwendet um runnable zu implementieren. Über das SpielbrettView Objekt wird der
- Frame auf visible gesetzt.
- Zum Model View Controller Model:
- Der View kümmert sich um das Anzeigen der Felder, Buttons und Spielinfos.
- In unserem Model ist die gesamte Logik implementiert, sowie die ActionListener, welche benötigt werden um
- den Zustand des Spiels bei bestimmten Inputs (Mausklicks) entsprechend zu ändern.
- Im Controller sind Instanzen von Model und View enhtalten und verbindet somit die beiden Elemente.
- Er weist den Feldern ihre entsprechenden Listener aus dem Model zu und initialisiert das Spiel.
- Die KlickLogik wird mittels Kontroller mit dem View verbunden, somit kann bei bestimmten Inputs
- der View geupdatet werden.
- In der Main methode wird nur noch eine Controller Instanz benötigt um die runnable Methode zu implementieren
- und das Spiel zu starten.
- Arbeitsteilung:
- Chrisi Julius:
- View:
- -Spielbrettview Klasse.
- Model:
- -Feld Klasse.
- -Den Teil der KlickLogik Klasse welche sich ums einsetzen von Steinen mittels Linksklick kümmert . (KlickLogik.java Zeile 39-101)
- Control:
- Controller Klasse
- Hrbatovic Esad
- Model:
- -den Teil der KlickLogik Klasse welcher sich um den Popout(Rechtsklick) kümmert. (Klicklogik.java Zeile 102-145)
- -Klasse ClearButtonListener.
- -Hinzufügen und implementieren des Neustart-Buttons
- Main Methode
- Raph Jüttner:
- -checkWin Methode welche ein Game Over erkennt. (4 Steine horizontal, vertikal oder schräg angereiht). Klasse KlickLogik Zeile 153-Ende.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement