diff --git a/src/de/jaujau/spiellogik/Spiel.java b/src/de/jaujau/spiellogik/Spiel.java index 68bc9b6..4c5572c 100644 --- a/src/de/jaujau/spiellogik/Spiel.java +++ b/src/de/jaujau/spiellogik/Spiel.java @@ -1,5 +1,7 @@ package de.jaujau.spiellogik; +import java.util.Random; + import de.jaujau.daten.Farbe; import de.jaujau.daten.Kartensatz; import de.jaujau.daten.Spieler; @@ -7,55 +9,122 @@ 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 { - private Spieler spieler; private Spieler amZug; + 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) { //Starter durch zufall bestimmen + Random zufallszahl = new Random(); + int zahl = zufallszahl.nextInt(1); + if(zahl == 1) { + amZug = Spieler.SPIELER; + } + else { + amZug = Spieler.COMPUTER; + } + spielgestartet = true; + kartensatz.ablegen(zufallszahl.nextInt(31)); + return; + } + if(amZug == Spieler.SPIELER) { + amZug = Spieler.COMPUTER; + } + else { + amZug= Spieler.SPIELER; + } } - private void zug(Spieler name) { - - } - private boolean pruefeMoeglichkeitLegen(int Kartenindex) { //Nur Strukturüberlegung, WÜNSCHER? + /** + * prüft ob eine Karte mit einem bestimmten Kartenindex gelegt werden kann + * @param kartenindex + */ + 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(); + legenFarbe = kartensatz.getKarte(kartenindex).getFARBE(); + legenWert = kartensatz.getKarte(kartenindex).getWERT(); - if(liegtWert == Wert.SIEBEN && legenWert == Wert.SIEBEN) { - return true; + if(zwei_ziehen && legenWert == Wert.SIEBEN) { + kartensatz.ablegen(kartenindex); + spiel(); + return; } - if(liegtWert == Wert.ACHT && legenWert == Wert.ACHT) { - return true; + if(aussetzen && legenWert == Wert.ACHT) { + kartensatz.ablegen(kartenindex); + spiel(); + return; } if(!aussetzen && !zwei_ziehen) { - if(legenFarbe == liegtFarbe) { - return true; + if(legenFarbe == gelegteFarbe) { + kartensatz.ablegen(kartenindex); + spiel(); + return; } - if(legenWert == liegtWert) { - return true; + if(legenWert == gelegterWert) { + kartensatz.ablegen(kartenindex); + spiel(); + return; } } - return false; + if(aussetzen) { + spiel(); + aussetzen = false; + } } - private boolean pruefeMoeglichkeitZiehen(int Kartenindex) { - if(kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT() == Wert.ACHT) { - return false; + + /** + * 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; } - return true; } }