From 6e4804d0865eb4fb768ff0ee2a3c4a79a8de74a1 Mon Sep 17 00:00:00 2001 From: Fabian Keller Date: Mon, 14 Dec 2020 16:55:46 +0100 Subject: [PATCH 1/2] =?UTF-8?q?Kleine=20=C3=84nderung=20an=20Karteziehen()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/de/jaujau/spiellogik/Spiel.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/de/jaujau/spiellogik/Spiel.java b/src/de/jaujau/spiellogik/Spiel.java index dcb05b6..1588fac 100644 --- a/src/de/jaujau/spiellogik/Spiel.java +++ b/src/de/jaujau/spiellogik/Spiel.java @@ -24,6 +24,16 @@ public class Spiel { private Wert gelegterWert; + boolean getAussetzen() { + return aussetzen; + } + + + boolean getZwei_ziehen() { + return zwei_ziehen; + } + + /** * alterniert zwischen Spieler und Computer und legt Beginner fest */ @@ -111,10 +121,13 @@ public class Spiel { kartenZiehen = 0; zwei_ziehen = false; } - if(aussetzen) { + else if(aussetzen) { spiel(); aussetzen = false; } + else { + kartensatz.ziehen(amZug); + } } From e2ee7e2a730b18db81c231a581e0da23fa980f7e Mon Sep 17 00:00:00 2001 From: Fabian Keller Date: Wed, 30 Dec 2020 14:22:38 +0100 Subject: [PATCH 2/2] Methoden zur Klasseninteraktion hinzugefuegt --- src/de/jaujau/spiellogik/Spiel.java | 90 +++++++++++++++++------------ 1 file changed, 54 insertions(+), 36 deletions(-) diff --git a/src/de/jaujau/spiellogik/Spiel.java b/src/de/jaujau/spiellogik/Spiel.java index 170b5ed..c2a6611 100644 --- a/src/de/jaujau/spiellogik/Spiel.java +++ b/src/de/jaujau/spiellogik/Spiel.java @@ -1,13 +1,14 @@ package de.jaujau.spiellogik; +import java.util.ArrayList; import java.util.Random; -import de.jaujau.daten.Farbe; import de.jaujau.daten.Kartensatz; import de.jaujau.daten.Spieler; import de.jaujau.daten.Wert; + /** * Diese Klasse prüft die Spielaktionen und alterniert zwischen Spieler und Computer * @author Fabian Keller @@ -19,8 +20,7 @@ public class Spiel { private boolean aussetzen; private boolean zwei_ziehen; private int kartenZiehen; - private Kartensatz kartensatz; - private Farbe gelegteFarbe; + protected Kartensatz kartensatz; private Wert gelegterWert; private Spielzug spielzug; @@ -34,7 +34,6 @@ public class Spiel { return zwei_ziehen; } - /** * alterniert zwischen Spieler und Computer und legt Beginner fest */ @@ -70,55 +69,74 @@ public class Spiel { /** - * prüft ob eine Karte mit einem bestimmten Kartenindex gelegt werden kann + * falls eine Karte gelegt werden kann wird diese gelegt * @param kartenindex */ - private void karteLegen(int kartenindex) { //Nur Strukturüberlegung, WÜNSCHER? - zugMoeglich(); - if (spielzug.pruefeZug(kartenindex)) { - kartensatz.ablegen(kartenindex); - } - } - - - /** - * prüft ob eine Karte gezogen werden kann - */ - private void karteZiehen(){ - zugMoeglich(); - if(zwei_ziehen) { - for(int i = 0; i < kartenZiehen; i++) { - kartensatz.ziehen(amZug); - } - spiel(); - kartenZiehen = 0; - zwei_ziehen = false; - } - else if(aussetzen) { - spiel(); + private void karteLegen(int kartenindex) { //WÜNSCHER? + if(pruefeHand(amZug)) { + if (spielzug.pruefeZug(kartenindex)) { + kartensatz.ablegen(kartenindex); + spiel(); + effekteSetzen(); //kartenindex übergeben und anhand dessen effekte setzen + }//oder ziehen? + }// else kein Zug möglich + else { aussetzen = false; } - else { - kartensatz.ziehen(amZug); + }//wann wird aussetzen auf false gesetzt + + + /** + * falls eine oder mehrere Karten gezogen werden können, wird dies ausgeführt + */ + private void karteZiehen(){ + if(pruefeHand(amZug)) { + if(zwei_ziehen) { + for(int i = 0; i < kartenZiehen; i++) { + kartensatz.ziehen(amZug); + } + kartenZiehen = 0; + zwei_ziehen = false; + spiel(); + } + else { + kartensatz.ziehen(amZug); + } } } /** - * prüft ob ein Zug überhaupt möglich ist und ließt Werte zum weiterarbeiten ein + * setzt Effekt-Variablen */ - private void zugMoeglich() { - gelegteFarbe = kartensatz.getKarte(kartensatz.getletzteKarte()).getFARBE(); + private void effekteSetzen() { //was passiert wenn 2 gezogen wurde und dann der nächste spieler diese Funktion ausführt. gelegterWert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT(); if(gelegterWert == Wert.ACHT) { aussetzen = true; } - else { - aussetzen = false; - } if(gelegterWert == Wert.SIEBEN) { zwei_ziehen = true; kartenZiehen += 2; } } + + + /** + * prüft ob, wenn eine 8 gelegt wurde, eine 8 auf der Hand ist + * und der Zug somit möglich ist + * @return true falls ein Zug möglich ist + * @return false falls kein Zug möglich ist + */ + private boolean pruefeHand(Spieler amZug) { + if(aussetzen) { + ArrayList handvonSpieler = kartensatz.getHand(amZug); + for(int i = 0; i < handvonSpieler.size(); i++) { + if(kartensatz.getKarte(handvonSpieler.get(i)).getWERT() == Wert.ACHT) { + return true; + } + } + return false; + } + return true; + } }