Verschiebung der Variablenübergabe für ziehen und aussetzen in den

Funktionsaufruf
This commit is contained in:
mokoe
2021-01-07 13:25:57 +01:00
parent 957687d1a8
commit 51525f1197
2 changed files with 49 additions and 74 deletions

View File

@@ -18,7 +18,6 @@ public class Computer_gegner {
// //
// Fields // Fields
// //
Spiel spiel;
Wert letztekartewert; Wert letztekartewert;
Farbe letztekartefarbe; Farbe letztekartefarbe;
ArrayList<Integer> hand; ArrayList<Integer> hand;
@@ -61,19 +60,17 @@ public class Computer_gegner {
* Als n<>chstes Werden Karten der aktuellen Farbe gelegt * Als n<>chstes Werden Karten der aktuellen Farbe gelegt
* Dann Karten die den aktuellenw Wert besitzen * Dann Karten die den aktuellenw Wert besitzen
* Zuletzt Buben um sich eine Farbe zu w<>nschen * Zuletzt Buben um sich eine Farbe zu w<>nschen
* @param Kartensatz aktueller Stand des Kartensatzes * @param boolean ziehen, aussetzen
* @return Kartenindex der Karte die gelegt werden soll * @return Kartenindex der Karte die gelegt werden soll
*/ */
public int cpu_Zug() { //Erzeugt ein Abbild des aktuellen Kartensatzes, mit Stand der Karten public int cpu_Zug(boolean ziehen, boolean aussetzen) { //Erzeugt ein Abbild des aktuellen Kartensatzes, mit Stand der Karten
letztekartewert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT(); //Speichert den Wert der Karte, die zuletzt gelegt wurde letztekartewert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT(); //Speichert den Wert der Karte, die zuletzt gelegt wurde
letztekartefarbe = kartensatz.getKarte(kartensatz.getletzteKarte()).getFARBE(); //Speichert die Farbe der Karte, die zuletzt gelegt wurde letztekartefarbe = kartensatz.getKarte(kartensatz.getletzteKarte()).getFARBE(); //Speichert die Farbe der Karte, die zuletzt gelegt wurde
hand = kartensatz.getHand(Spieler.COMPUTER); //Speichert die Karten, die der Computer aktuell auf der Hand hat hand = kartensatz.getHand(Spieler.COMPUTER); //Speichert die Karten, die der Computer aktuell auf der Hand hat
farbeInHand = false; //Speichert, ob die aktuell liegende Farbe in der Hand des Computers vorhanden ist farbeInHand = false; //Speichert, ob die aktuell liegende Farbe in der Hand des Computers vorhanden ist
wertInHand = false; //Speichert, ob der aktuell liegende Wert in der Hand des Computers vorhanden ist wertInHand = false; //Speichert, ob der aktuell liegende Wert in der Hand des Computers vorhanden ist
int rueckgabeindex = -1; //Speichert den Kartenindex, der Karte, die gelegt werden soll int rueckgabeindex = -1; //Speichert den Kartenindex, der Karte, die gelegt werden soll. Standard -1 f<>r ziehen, falls keine passende Karte auf Hand
aussetzen = spiel.getAussetzen(); //Speichert, ob der Computer aktuell aussetzen m<>sste bubeInHand = false; //SPeichert, ob ein Bube in der Hand vorhanden ist
ziehen = spiel.getZwei_ziehen(); //Speichert, ob der Computer aktuell ziehen m<>sste
bubeInHand = false;
for(int i = 0; i < hand.size(); i++) { //Schleife geht alle Karten in der Hand des Computers durch for(int i = 0; i < hand.size(); i++) { //Schleife geht alle Karten in der Hand des Computers durch
Farbe farbeHK = kartensatz.getKarte(hand.get(i)).getFARBE(); //Holt sich die Farbe der aktuellen Handkarte Farbe farbeHK = kartensatz.getKarte(hand.get(i)).getFARBE(); //Holt sich die Farbe der aktuellen Handkarte
@@ -93,18 +90,21 @@ public class Computer_gegner {
} }
//W<>hlt aus, welche Karte gelegt wird //W<>hlt aus, welche Karte gelegt wird
if (aussetzen || ziehen) { //Muss der Computer aussetzen oder ziehen, versucht er eine passende Konterkarte zu legen if ((aussetzen || ziehen) && wertInHand) { //Muss der Computer aussetzen oder ziehen, versucht er eine passende Konterkarte zu legen
rueckgabeindex = wertLegen(letztekartewert); rueckgabeindex = wertLegen(letztekartewert);
} }
else if(farbeInHand) { //Hat der Computer die Farbe auf der Hand, versucht er diese zu legen else if(farbeInHand && !aussetzen && !ziehen) { //Hat der Computer die Farbe auf der Hand, versucht er diese zu legen
rueckgabeindex = farbeLegen(letztekartefarbe); rueckgabeindex = farbeLegen(letztekartefarbe);
} }
else if(wertInHand) { //Hat der Computer nicht die passende Farbe, aber einen passenden Wert, legt er diesen else if(wertInHand && !aussetzen && !ziehen) { //Hat der Computer nicht die passende Farbe, aber einen passenden Wert, legt er diesen
rueckgabeindex = wertLegen(letztekartewert); rueckgabeindex = wertLegen(letztekartewert);
} }
else if(bubeInHand) { //Hat der Computer weder die passende Farbe, noch den passenden Wert auf der Hand, aber einen W<>nscher, legt er diesen else if(bubeInHand && !aussetzen && !ziehen) { //Hat der Computer weder die passende Farbe, noch den passenden Wert auf der Hand, aber einen W<>nscher, legt er diesen
rueckgabeindex = wertLegen(Wert.BUBE); rueckgabeindex = wertLegen(Wert.BUBE);
} }
else if(aussetzen && !wertInHand) { //Muss der Computer aussetzen und kann nicht reagieren, gibt er eine -2 zur<75>ck
rueckgabeindex = -2;
}
@@ -152,7 +152,7 @@ public class Computer_gegner {
* @return Farbe gew<65>hlte Farbe * @return Farbe gew<65>hlte Farbe
*/ */
public Farbe farbeAussuchen() { public Farbe farbeAussuchen() {
Farbe wahl = Farbe.KREUZ; //Erzeugt ein Abbild des aktuellen Kartensatzes, mit Stand der Karten Farbe wahl = Farbe.KREUZ;
hand = kartensatz.getHand(Spieler.COMPUTER); //Speichert die Karten, die der Computer aktuell auf der Hand hat hand = kartensatz.getHand(Spieler.COMPUTER); //Speichert die Karten, die der Computer aktuell auf der Hand hat
int hoechsteAnzahl = 0; int hoechsteAnzahl = 0;
@@ -193,5 +193,4 @@ public class Computer_gegner {
return 1; return 1;
} }
//Commitkommentar
} }

View File

@@ -20,33 +20,15 @@ public class Spielzug {
// Fields // Fields
// //
/* private Kartensatz kartensatz;
if(zwei_ziehen && legenWert == Wert.SIEBEN) {
kartensatz.ablegen(kartenindex); //
spiel(); // Constructors
return; //
} public Spielzug (Kartensatz karten) {
if(aussetzen && legenWert == Wert.ACHT) { kartensatz = karten;
kartensatz.ablegen(kartenindex); };
spiel();
return;
}
if(!aussetzen && !zwei_ziehen) {
if(legenFarbe == gelegteFarbe) {
kartensatz.ablegen(kartenindex);
spiel();
return;
}
if(legenWert == gelegterWert) {
kartensatz.ablegen(kartenindex);
spiel();
return;
}
}
if(aussetzen) {
spiel();
aussetzen = false;
}*/
/** /**
* Funktion untersucht, ob die Karte die der Spieler zu legen verusucht auch gelegt werden kann * Funktion untersucht, ob die Karte die der Spieler zu legen verusucht auch gelegt werden kann
* Sollte der Spieler gerade aussetzen m<>ssen, kann nur eine 8 gelegt werden * Sollte der Spieler gerade aussetzen m<>ssen, kann nur eine 8 gelegt werden
@@ -55,50 +37,44 @@ public class Spielzug {
* @param kartenindex Index der Karte die gelegt werden soll * @param kartenindex Index der Karte die gelegt werden soll
* @return boolean * @return boolean
*/ */
public boolean pruefeZug(int kartenindex) { public boolean pruefeZug(int kartenindex, boolean ziehen, boolean aussetzen) {
// Farbe kartenfarbe = kartensatz.getKarte(kartenindex).getFARBE(); Farbe kartenfarbe = kartensatz.getKarte(kartenindex).getFARBE();
// Wert kartenwert = kartensatz.getKarte(kartenindex).getWERT(); Wert kartenwert = kartensatz.getKarte(kartenindex).getWERT();
// Wert letztekartewert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT(); Wert letztekartewert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT();
// Farbe letztekartefarbe = kartensatz.getKarte(kartensatz.getletzteKarte()).getFARBE(); Farbe letztekartefarbe = kartensatz.getKarte(kartensatz.getletzteKarte()).getFARBE();
// if(Spiel.getAussetzen() && kartenwert == Wert.ACHT) { if(aussetzen && kartenwert == Wert.ACHT) {
// return true; return true;
// } }
// else if (Spiel.getZwei_ziehen() && kartenwert == Wert.SIEBEN) { else if (ziehen && kartenwert == Wert.SIEBEN) {
// return true; return true;
// } }
// else if (!Spiel.getAussetzen() && !Spiel.getZwei_ziehen() && (kartenwert == letztekartewert || kartenfarbe == letztekartefarbe || kartenwert == Wert.BUBE)) { else if (!aussetzen && !ziehen && (kartenwert == letztekartewert || kartenfarbe == letztekartefarbe || kartenwert == Wert.BUBE)) {
// return true; return true;
// } }
// else { else {
return true; // auf true ge<67>ndert f<>r DEBUG!! return false;
// } }
} }
/** /**
* Pr<50>ft, ob der Spieler eine Karte legen kann, indem jede Karte in der Hand des Spielers mit der Funktion pruefeZug gepr<70>ft wird * Pr<50>ft, ob der Spieler eine Karte legen kann, indem jede Karte in der Hand des Spielers mit der Funktion pruefeZug gepr<70>ft wird
* @param spieler Spieler, der am Zug ist und dessen Hand * @param spieler, boolean, boolean
* @return * @return boolean
*/ */
public boolean zugMoeglich(Spieler spieler) { public boolean zugMoeglich(Spieler spieler, boolean ziehen, boolean aussetzen) {
// Kartensatz kartensatz = Spiel.getKartensatz(); boolean gefunden = false;
boolean gefunden = true; // auf true ge<67>ndert f<>r DEBUG!! ArrayList<Integer> Hand = kartensatz.getHand(spieler);
// ArrayList<Integer> Hand = kartensatz.getHand(spieler); for (int i = 0; i < Hand.size(); i++) {
// for (int i = 0; i < Hand.size(); i++) { if (pruefeZug(i, ziehen, aussetzen)) {
// if (pruefeZug(i)) { gefunden = true;
// gefunden = true; }
// } }
// }
return gefunden; return gefunden;
} }
//
// Constructors
//
public Spielzug (Kartensatz karten) {
Kartensatz kartensatz = karten;
};
// //
// Methods // Methods