Würfel Technik
Klassen
- logik.Wuerfel
- logik.Spieler
- gui.WuerfelAnsicht
- gui.WuerfelUebersicht
- gui.NewGameWindow
- gui.SpielAnsicht
Funktion
Das Würfeln in Monopoly wird über den Aktionsbutton in der Spielansicht ausgelöst. Durch Erzeugen von Zufallszahlen von 1 bis 6 werden echte Würfel simuliert. Ihr Ergebnis wird in der Würfelansicht ausgegeben und die Spielfigur bewegt, sofern nicht im Gefängnis. Es kann überprüft werden ob Pasch geworfen wurde, um ein weiteres Würfeln zu erlauben, bzw. den Spieler aus dem Gefängnis zu holen.
Die Würfelklasse verwaltet eine statische Liste aller erzeugten Würfelobjekte und bietet statische Methoden alle gleichzeitig zu werfen und anzusehen. Hierbei wird die statische Liste aller Würfelobjekte durchlaufen und jedes Objekt wird geworfen, bzw. das Ergebnis abgefragt und aufsummiert.
Initialisierung
- Während der Erstellung eines neuen Spiels im entsprechenden Fenster werden 2 neue Würfelobjekte erstellt.
- Für jeden neu erstellten Würfel wird dieserin die statischen Liste aller Würfel aufgenommen, einmal geworfen (er fällt quasi aus der Verpackung), und die mit dem ersten Würfeln erzeugt Würfelansicht wird in das Würfelübersichtspanel eingefügt.
Würfeln
- Es wird gesetzt, dass der aktive Spieler in diesem Zug bisher nicht aus dem Gefängnis gekommen ist. Diese Unterscheidung ist nötig um zu verhindern, dass Spieler die mit einem Pasch aus dem Gefängnis kommen nicht nochmal an der Reihe mit Würfeln sind.
- Sollte der Spieler im Gefängnis sein (getGefaengnisrunde() != 0), so werden alle Würfel geworfen und abgefragt, ob ein Pasch geworfen wurde. Hierzu werden alle Würfel durchgegangen und verglichen, ob die Augenzahl des letzten Würfels der des aktuellen Würfels entspricht. Das boolsche Ergebnis dieses Vergleichs wird mit dem Boolean-Wert, ob bisher ein Pasch gewürfelt wurde (anfangs WAHR) logisch UND-Verknüpft.
- Wurde ein Pasch gewürfelt, so erhält der Spieler eine Hinweisnachricht, das Gefängnispiktogramm wird entfernt, die Gefängnisrunde zurückgesetzt und die ausGefaengnis Booleanvariable gesetzt, so das ein Spieler der gerade mit Pasch aus dem Gefängnis kommt nicht nocheinmal Würfeln darf. Die Spielfigur des Spielers wird um die Augenzahl beider Würfel versetzt und der nächste Spieler ist an der Reihe.
- Wurde kein Pasch gewürfelt und der Spieler ist bereits in der 3. Spielrunde im Gefängnis, so geschieht das selbe, als wenn er ein Pasch gewürfelt hätte. Zusätzlich wird im jedoch das Strafgeld des Gefängnisfeldes vom Guthaben des Spielers abgezogen.
- Ist der Spieler noch keine 3 Runden im Gefängnis und schafft es nicht ein Pasch zu würfeln, so wird lediglich die Gefängnisrunde um 1 erhöht und der nächste Spieler ist an der Reihe.
- Nun folgt die Routine für Spieler die nicht im Gefängnis sind. Zuerst wird die wuerfeln()-Methode des aktuellen Spielers aufgerufen. Diese würfelt alle Würfel und zählt bei Pasch den Paschzähler hoch. Ist dieser Paschzähler 3, so wird der Spieler ins Gefängnis geschickt.
- Wenn der Spieler mindestens eine Immobilie besitzt, wird der "Hypothek"-Aktionsbutton aktiviert.
- Wenn der Spieler einen Pasch gewürfelt hat und nicht im Gefängnis sitzt (Gefängniszähler == 0) und auch nicht gerade aus dem Gefängnis freikam (getAusGefaengnis() == false), so wird eine Meldung ausgegeben, dass der Spieler erneut dran ist. Es wird nicht der nächste Spieler als aktiver Spieler gesetzt.
- Ansonsten wird einfach der nächste Spieler aktiv gesetzt ohne weitere Ausgabe. Dies geschieht allerdings nicht wenn der Spieler im Gefängnis war oder ist, denn dann wurde Spieler.naechster() bereits aufgerufen.
Anzeige
Beim ersten Werfen des Würfels vor Spielbeginn (Wenn er "aus der Verpackung fällt") wird eine Würfelansicht für den Würfel erstellt und in die Würfelübersicht eingefügt. Die Würfelansicht ist ein leeres JLabel mit einem Icon, das die jeweilige gewürfelte Augenanzahl darstellt. Bei jedem würfeln des Würfels wird das Icon der Ansicht auf "wuerfelX.gif" gesetzt, wobei X der gewürfelten Augenanzahl entspricht.
Comments are disabled for this space. In order to enable comments, Messages tool must be added to project.
You can add Messages tool from Tools section on the Admin tab.