diff --git a/src/de/jaujau/spiellogik/Spiel.java b/src/de/jaujau/spiellogik/Spiel.java index 29e8552..4c5572c 100644 --- a/src/de/jaujau/spiellogik/Spiel.java +++ b/src/de/jaujau/spiellogik/Spiel.java @@ -9,7 +9,8 @@ import de.jaujau.daten.Wert; /** - * Class Spiel + * Diese Klasse prüft die Spielaktionen und alterniert zwischen Spieler und Computer + * @author Fabian Keller */ public class Spiel { @@ -17,10 +18,17 @@ public class Spiel { private boolean spielgestartet = false; private boolean aussetzen; private boolean zwei_ziehen; + private int kartenZiehen; private Kartensatz kartensatz; + private Farbe gelegteFarbe; + private Wert gelegterWert; + + /** + * alterniert zwischen Spieler und Computer und legt Beginner fest + */ private void spiel() { - if(spielgestartet) { + if(!spielgestartet) { //Starter durch zufall bestimmen Random zufallszahl = new Random(); int zahl = zufallszahl.nextInt(1); if(zahl == 1) { @@ -43,42 +51,80 @@ public class Spiel { /** + * prüft ob eine Karte mit einem bestimmten Kartenindex gelegt werden kann * @param kartenindex */ - private void legen(int kartenindex) { //Nur Strukturüberlegung, WÜNSCHER? + private void karteLegen(int kartenindex) { //Nur Strukturüberlegung, WÜNSCHER? + zugMoeglich(); Farbe legenFarbe; Wert legenWert; - Farbe liegtFarbe; - Wert liegtWert; legenFarbe = kartensatz.getKarte(kartenindex).getFARBE(); legenWert = kartensatz.getKarte(kartenindex).getWERT(); - liegtFarbe = kartensatz.getKarte(kartensatz.getletzteKarte()).getFARBE(); - liegtWert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT(); - if(liegtWert == Wert.SIEBEN && legenWert == Wert.SIEBEN) { + if(zwei_ziehen && legenWert == Wert.SIEBEN) { kartensatz.ablegen(kartenindex); spiel(); + return; } - if(liegtWert == Wert.ACHT && legenWert == Wert.ACHT) { + if(aussetzen && legenWert == Wert.ACHT) { kartensatz.ablegen(kartenindex); spiel(); + return; } if(!aussetzen && !zwei_ziehen) { - if(legenFarbe == liegtFarbe) { + if(legenFarbe == gelegteFarbe) { kartensatz.ablegen(kartenindex); spiel(); + return; } - if(legenWert == liegtWert) { + if(legenWert == gelegterWert) { kartensatz.ablegen(kartenindex); spiel(); + return; } } + if(aussetzen) { + spiel(); + aussetzen = false; + } } - private void ziehen(int Kartenindex) { - if(kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT() == Wert.ACHT) { - kartensatz.ziehen(amZug); + + /** + * 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; + } + if(aussetzen) { + spiel(); + aussetzen = false; + } + } + + + /** + * prüft ob ein Zug überhaupt möglich ist und ließt Werte zum weiterarbeiten ein + */ + private void zugMoeglich() { + gelegteFarbe = kartensatz.getKarte(kartensatz.getletzteKarte()).getFARBE(); + gelegterWert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT(); + if(gelegterWert == Wert.ACHT) { + aussetzen = true; + } + else { + aussetzen = false; + } + if(gelegterWert == Wert.SIEBEN) { + zwei_ziehen = true; + kartenZiehen += 2; } } }