Methoden zur Klasseninteraktion hinzugefuegt

This commit is contained in:
Fabian Keller
2020-12-30 14:22:38 +01:00
parent a108a61a51
commit e2ee7e2a73

View File

@@ -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<70>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<EFBFBD>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<75>berlegung, W<EFBFBD>NSCHER?
zugMoeglich();
private void karteLegen(int kartenindex) { //W<>NSCHER?
if(pruefeHand(amZug)) {
if (spielzug.pruefeZug(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(){
zugMoeglich();
if(pruefeHand(amZug)) {
if(zwei_ziehen) {
for(int i = 0; i < kartenZiehen; i++) {
kartensatz.ziehen(amZug);
}
spiel();
kartenZiehen = 0;
zwei_ziehen = false;
}
else if(aussetzen) {
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() {
gelegteFarbe = kartensatz.getKarte(kartensatz.getletzteKarte()).getFARBE();
private void effekteSetzen() { //was passiert wenn 2 gezogen wurde und dann der n<>chste spieler diese Funktion ausf<73>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<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;
}
}