This commit is contained in:
mokoe
2020-12-30 14:23:19 +01:00

View File

@@ -1,13 +1,14 @@
package de.jaujau.spiellogik; package de.jaujau.spiellogik;
import java.util.ArrayList;
import java.util.Random; import java.util.Random;
import de.jaujau.daten.Farbe;
import de.jaujau.daten.Kartensatz; import de.jaujau.daten.Kartensatz;
import de.jaujau.daten.Spieler; import de.jaujau.daten.Spieler;
import de.jaujau.daten.Wert; import de.jaujau.daten.Wert;
/** /**
* Diese Klasse pr<70>ft die Spielaktionen und alterniert zwischen Spieler und Computer * Diese Klasse pr<70>ft die Spielaktionen und alterniert zwischen Spieler und Computer
* @author Fabian Keller * @author Fabian Keller
@@ -19,12 +20,20 @@ public class Spiel {
private boolean aussetzen; private boolean aussetzen;
private boolean zwei_ziehen; private boolean zwei_ziehen;
private int kartenZiehen; private int kartenZiehen;
private Kartensatz kartensatz; protected Kartensatz kartensatz;
private Farbe gelegteFarbe;
private Wert gelegterWert; private Wert gelegterWert;
private Spielzug spielzug; private Spielzug spielzug;
boolean getAussetzen() {
return aussetzen;
}
boolean getZwei_ziehen() {
return zwei_ziehen;
}
/** /**
* alterniert zwischen Spieler und Computer und legt Beginner fest * alterniert zwischen Spieler und Computer und legt Beginner fest
*/ */
@@ -60,52 +69,74 @@ public class Spiel {
/** /**
* pr<EFBFBD>ft ob eine Karte mit einem bestimmten Kartenindex gelegt werden kann * falls eine Karte gelegt werden kann wird diese gelegt
* @param kartenindex * @param kartenindex
*/ */
private void karteLegen(int kartenindex) { //Nur Struktur<75>berlegung, W<EFBFBD>NSCHER? private void karteLegen(int kartenindex) { //W<>NSCHER?
zugMoeglich(); if(pruefeHand(amZug)) {
if (spielzug.pruefeZug(kartenindex)) { if (spielzug.pruefeZug(kartenindex)) {
kartensatz.ablegen(kartenindex); kartensatz.ablegen(kartenindex);
spiel();
effekteSetzen(); //kartenindex <20>bergeben und anhand dessen effekte setzen
}//oder ziehen?
}// else kein Zug m<>glich
else {
aussetzen = false;
} }
} }//wann wird aussetzen auf false gesetzt
/** /**
* pr<EFBFBD>ft ob eine Karte gezogen werden kann * falls eine oder mehrere Karten gezogen werden k<EFBFBD>nnen, wird dies ausgef<65>hrt
*/ */
private void karteZiehen(){ private void karteZiehen(){
zugMoeglich(); if(pruefeHand(amZug)) {
if(zwei_ziehen) { if(zwei_ziehen) {
for(int i = 0; i < kartenZiehen; i++) { for(int i = 0; i < kartenZiehen; i++) {
kartensatz.ziehen(amZug); kartensatz.ziehen(amZug);
} }
spiel();
kartenZiehen = 0; kartenZiehen = 0;
zwei_ziehen = false; zwei_ziehen = false;
}
if(aussetzen) {
spiel(); spiel();
aussetzen = false; }
else {
kartensatz.ziehen(amZug);
}
} }
} }
/** /**
* pr<EFBFBD>ft ob ein Zug <20>berhaupt m<>glich ist und lie<69>t Werte zum weiterarbeiten ein * setzt Effekt-Variablen
*/ */
private void zugMoeglich() { private void effekteSetzen() { //was passiert wenn 2 gezogen wurde und dann der n<>chste spieler diese Funktion ausf<73>hrt.
gelegteFarbe = kartensatz.getKarte(kartensatz.getletzteKarte()).getFARBE();
gelegterWert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT(); gelegterWert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT();
if(gelegterWert == Wert.ACHT) { if(gelegterWert == Wert.ACHT) {
aussetzen = true; aussetzen = true;
} }
else {
aussetzen = false;
}
if(gelegterWert == Wert.SIEBEN) { if(gelegterWert == Wert.SIEBEN) {
zwei_ziehen = true; zwei_ziehen = true;
kartenZiehen += 2; kartenZiehen += 2;
} }
} }
/**
* pr<70>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<Integer> 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;
}
} }