From 5f53fe854a784348f4e4a6faa97578959c4047b6 Mon Sep 17 00:00:00 2001 From: Sebastian Kacza Date: Wed, 2 Dec 2020 20:59:42 +0100 Subject: [PATCH] Klasse Karte fertig, Klasse Kartensatz teilweise fertig --- src/de/jaujau/daten/Karte.java | 2 +- src/de/jaujau/daten/Kartensatz.java | 73 +++++++++++++++++------------ 2 files changed, 45 insertions(+), 30 deletions(-) diff --git a/src/de/jaujau/daten/Karte.java b/src/de/jaujau/daten/Karte.java index 8f80166..96e1b22 100644 --- a/src/de/jaujau/daten/Karte.java +++ b/src/de/jaujau/daten/Karte.java @@ -57,7 +57,7 @@ public class Karte { /** * Gibt die Eigenschaften der Karte aus Text aus - * Diese Methode dient zum Testen der Funktion + * !!!Diese Methode ist nur für Debug-Ausgaben notwendig und kann Später entfernt werden!!! * @return String mit den Karten Eigenschaften */ @Override diff --git a/src/de/jaujau/daten/Kartensatz.java b/src/de/jaujau/daten/Kartensatz.java index cde915a..7dc5d12 100644 --- a/src/de/jaujau/daten/Kartensatz.java +++ b/src/de/jaujau/daten/Kartensatz.java @@ -58,48 +58,62 @@ public class Kartensatz { } - //!!!Funktioniert noch nicht + //!!!Es kann noch zu fehler kommen /** * Zieht eine Zufällige karte aus dem Ziestapel für einen bestimmten Spieler und gibt den Karten dem Spieler auf die Hand * Wenn keine Karten mehr auf dem Ziestapel sind werden alle Karten vom Ablagestabel auf den Ziestapel verschoben * @param spieler Spieler der die Karte auf die Hand bekommen soll */ - public void ziehen(Spieler spieler) { + public boolean ziehen(Spieler spieler) { + //System.out.println("Start Ziehen"); //Ziestapel Prüfen int ZiestapelAnzahl = getZiestapelAnzahl(); if(ZiestapelAnzahl < 1) { - //Karten vom Ablagestapel auf den Ziestapel verschieben - for(Karte karte: kartensatz) { - if(karte.getAblageort() == Ablageort.ABLAGESTAPEL) { - karte.setAblageort(Ablageort.ZIESTAPEL); + //Alle Karten vom Ablagestapel ausßer letze auf den Ziestapel verschieben + for(int i = 0; i < 32; i++) { + if((kartensatz[i].getAblageort() == Ablageort.ABLAGESTAPEL) && (i != letztekarte)) { + kartensatz[i].setAblageort(Ablageort.ZIESTAPEL); } } } - //Zienummer auswählen - Random random = new Random(); - int auswahl = random.nextInt(ZiestapelAnzahl); - System.out.println(auswahl); - - //Ziekarte bestimmen und - int ZiestapelIndex = 0; - for(Karte karte: kartensatz) { - if(karte.getAblageort() == Ablageort.ZIESTAPEL) { - if(auswahl == ZiestapelIndex) { - //Karte im Ziestaple ist die die Ausgewählt wurde - if(spieler == Spieler.SPIELER) { - karte.setAblageort(Ablageort.SPIELER); - } - if(spieler == Spieler.COMPUTER) { - karte.setAblageort(Ablageort.COMPUTER); - } - } - ZiestapelIndex++; - } + ZiestapelAnzahl = getZiestapelAnzahl(); + //System.out.println("ZieStapel Anzahl " + ZiestapelAnzahl); + if(ZiestapelAnzahl > 0) { + //Ziekarte bestimmen und + //Zienummer auswählen + //System.out.println("Nummer wählen"); + Random random = new Random(); + int auswahl = random.nextInt(ZiestapelAnzahl); + //System.out.println("Karte Ziehen " + auswahl); + //Wenn Karten auf dem Ziespabel verfügbar sind + int ZiestapelIndex = 0; + for(int i = 0; i < 32; i++) { + //System.out.println("ZielStapelIndex " + ZiestapelIndex); + if(kartensatz[i].getAblageort() == Ablageort.ZIESTAPEL) { + //System.out.println("Suche " + auswahl + " ZieIndex " + ZiestapelIndex + " KartenIndex " + i); + if(auswahl == ZiestapelIndex) { + //System.out.println("Ziehe Karte " + i + " " + kartensatz[i].toString()); + //Karte im Ziestaple ist die die Ausgewählt wurde + if(spieler == Spieler.SPIELER) { + kartensatz[i].setAblageort(Ablageort.SPIELER); + } + if(spieler == Spieler.COMPUTER) { + kartensatz[i].setAblageort(Ablageort.COMPUTER); + } + return true; + } + ZiestapelIndex++; + } + + } } - - + else { + System.out.println("Keine Karten zum ziehen verfügbar!"); + return false; + } + return false; } @@ -142,7 +156,7 @@ public class Kartensatz { } - //Kommt noch + //Methode kommt noch public void SetWunschfarbe(Farbe farbe) { } @@ -150,6 +164,7 @@ public class Kartensatz { /** * Dies Funktion Prüft ob sich auf dem Ziestapel noch mindestes eine Karte Befindet + * Wird nur Klassenintern Verwendet * @return true wenn keine Karten Vorhanden, false wenn kein Karte vorhanden */ private int getZiestapelAnzahl() {