From 51525f11974bc361d6e83de179dd0487322a5893 Mon Sep 17 00:00:00 2001 From: mokoe Date: Thu, 7 Jan 2021 13:25:57 +0100 Subject: [PATCH] =?UTF-8?q?Verschiebung=20der=20Variablen=C3=BCbergabe=20f?= =?UTF-8?q?=C3=BCr=20ziehen=20und=20aussetzen=20in=20den=20Funktionsaufruf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/de/jaujau/spiellogik/Computer_gegner.java | 25 +++-- src/de/jaujau/spiellogik/Spielzug.java | 98 +++++++------------ 2 files changed, 49 insertions(+), 74 deletions(-) diff --git a/src/de/jaujau/spiellogik/Computer_gegner.java b/src/de/jaujau/spiellogik/Computer_gegner.java index 1d62c96..762fed6 100644 --- a/src/de/jaujau/spiellogik/Computer_gegner.java +++ b/src/de/jaujau/spiellogik/Computer_gegner.java @@ -18,7 +18,6 @@ public class Computer_gegner { // // Fields // - Spiel spiel; Wert letztekartewert; Farbe letztekartefarbe; ArrayList hand; @@ -61,19 +60,17 @@ public class Computer_gegner { * Als nächstes Werden Karten der aktuellen Farbe gelegt * Dann Karten die den aktuellenw Wert besitzen * 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 */ - 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 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 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 - int rueckgabeindex = -1; //Speichert den Kartenindex, der Karte, die gelegt werden soll - aussetzen = spiel.getAussetzen(); //Speichert, ob der Computer aktuell aussetzen müsste - ziehen = spiel.getZwei_ziehen(); //Speichert, ob der Computer aktuell ziehen müsste - bubeInHand = false; + int rueckgabeindex = -1; //Speichert den Kartenindex, der Karte, die gelegt werden soll. Standard -1 für ziehen, falls keine passende Karte auf Hand + bubeInHand = false; //SPeichert, ob ein Bube in der Hand vorhanden ist 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 @@ -93,18 +90,21 @@ public class Computer_gegner { } //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); } - 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); } - 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); } - 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); } + else if(aussetzen && !wertInHand) { //Muss der Computer aussetzen und kann nicht reagieren, gibt er eine -2 zurück + rueckgabeindex = -2; + } @@ -152,7 +152,7 @@ public class Computer_gegner { * @return Farbe gewählte Farbe */ 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 int hoechsteAnzahl = 0; @@ -193,5 +193,4 @@ public class Computer_gegner { return 1; } - //Commitkommentar } diff --git a/src/de/jaujau/spiellogik/Spielzug.java b/src/de/jaujau/spiellogik/Spielzug.java index 2ba31ef..5e88d3d 100644 --- a/src/de/jaujau/spiellogik/Spielzug.java +++ b/src/de/jaujau/spiellogik/Spielzug.java @@ -20,33 +20,15 @@ public class Spielzug { // Fields // - /* - if(zwei_ziehen && legenWert == Wert.SIEBEN) { - kartensatz.ablegen(kartenindex); - spiel(); - return; - } - if(aussetzen && legenWert == Wert.ACHT) { - 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; - }*/ + private Kartensatz kartensatz; + + // + // Constructors + // + public Spielzug (Kartensatz karten) { + kartensatz = karten; + }; + /** * 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 @@ -55,50 +37,44 @@ public class Spielzug { * @param kartenindex Index der Karte die gelegt werden soll * @return boolean */ - public boolean pruefeZug(int kartenindex) { + public boolean pruefeZug(int kartenindex, boolean ziehen, boolean aussetzen) { -// Farbe kartenfarbe = kartensatz.getKarte(kartenindex).getFARBE(); -// Wert kartenwert = kartensatz.getKarte(kartenindex).getWERT(); -// Wert letztekartewert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT(); -// Farbe letztekartefarbe = kartensatz.getKarte(kartensatz.getletzteKarte()).getFARBE(); -// if(Spiel.getAussetzen() && kartenwert == Wert.ACHT) { -// return true; -// } -// else if (Spiel.getZwei_ziehen() && kartenwert == Wert.SIEBEN) { -// return true; -// } -// else if (!Spiel.getAussetzen() && !Spiel.getZwei_ziehen() && (kartenwert == letztekartewert || kartenfarbe == letztekartefarbe || kartenwert == Wert.BUBE)) { -// return true; -// } -// else { - return true; // auf true geändert für DEBUG!! -// } + Farbe kartenfarbe = kartensatz.getKarte(kartenindex).getFARBE(); + Wert kartenwert = kartensatz.getKarte(kartenindex).getWERT(); + Wert letztekartewert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT(); + Farbe letztekartefarbe = kartensatz.getKarte(kartensatz.getletzteKarte()).getFARBE(); + if(aussetzen && kartenwert == Wert.ACHT) { + return true; + } + else if (ziehen && kartenwert == Wert.SIEBEN) { + return true; + } + else if (!aussetzen && !ziehen && (kartenwert == letztekartewert || kartenfarbe == letztekartefarbe || kartenwert == Wert.BUBE)) { + return true; + } + else { + return false; + } } /** * Prüft, ob der Spieler eine Karte legen kann, indem jede Karte in der Hand des Spielers mit der Funktion pruefeZug geprüft wird - * @param spieler Spieler, der am Zug ist und dessen Hand - * @return + * @param spieler, boolean, boolean + * @return boolean */ - public boolean zugMoeglich(Spieler spieler) { -// Kartensatz kartensatz = Spiel.getKartensatz(); - boolean gefunden = true; // auf true geändert für DEBUG!! -// ArrayList Hand = kartensatz.getHand(spieler); -// for (int i = 0; i < Hand.size(); i++) { -// if (pruefeZug(i)) { -// gefunden = true; -// } -// } + public boolean zugMoeglich(Spieler spieler, boolean ziehen, boolean aussetzen) { + boolean gefunden = false; + ArrayList Hand = kartensatz.getHand(spieler); + for (int i = 0; i < Hand.size(); i++) { + if (pruefeZug(i, ziehen, aussetzen)) { + gefunden = true; + } + } return gefunden; } - // - // Constructors - // - public Spielzug (Kartensatz karten) { - Kartensatz kartensatz = karten; - }; + // // Methods