From 2c864c3efbe296f9989e1641b035283bbf0ce202 Mon Sep 17 00:00:00 2001 From: Sebastian Kacza Date: Wed, 2 Dec 2020 18:36:13 +0100 Subject: [PATCH 1/6] Klasse Karte Implementiert, Klasse Kartensatz Implementiert (noch nicht alle Methoden vorhanden/funktionieren) --- src/de/jaujau/daten/Karte.java | 64 ++++++++++- src/de/jaujau/daten/Kartensatz.java | 158 +++++++++++++++++++++++++++- 2 files changed, 216 insertions(+), 6 deletions(-) diff --git a/src/de/jaujau/daten/Karte.java b/src/de/jaujau/daten/Karte.java index 0c6fafd..8f80166 100644 --- a/src/de/jaujau/daten/Karte.java +++ b/src/de/jaujau/daten/Karte.java @@ -2,11 +2,67 @@ package de.jaujau.daten; /** - * Class Karte + * Klasse Karte + * Verwaltet die Daten einer Spielkarte + * @author Sebastian Kacza */ public class Karte { + private Farbe FARBE; + private Wert WERT; + private Ablageort Ablageort; + + /** + * Konstruktor für die Klasse Karte + * Ablageort dird Standartmäßig auf Zielstapel gestezt + * @param f Farbe der Karte + * @param w Wert der Karte + */ + public Karte(Farbe f, Wert w) { + FARBE = f; + WERT = w; + Ablageort = de.jaujau.daten.Ablageort.ZIESTAPEL; + } + + /** + * Gibt die Farbe der Karte zurück + * @return Farbe der Karte + */ + public Farbe getFARBE() { + return FARBE; + } + + /** + * Gibt den Wert einer Karte zurück + * @return Wert der Karte + */ + public Wert getWERT() { + return WERT; + } + + /** + * Gibt den Ablageort der Karte zurück + * @return Ablageort der Karte + */ + public Ablageort getAblageort() { + return Ablageort; + } + + /** + * Ändert den Ablageoert der Karte + * @param ablageort Neuer Ablageort der Karte + */ + public void setAblageort(Ablageort ablageort) { + Ablageort = ablageort; + } - - - + /** + * Gibt die Eigenschaften der Karte aus Text aus + * Diese Methode dient zum Testen der Funktion + * @return String mit den Karten Eigenschaften + */ + @Override + public String toString() { + return "Karte [FARBE=" + FARBE + ", WERT=" + WERT + ", Ablageort=" + Ablageort + "]"; + } + } diff --git a/src/de/jaujau/daten/Kartensatz.java b/src/de/jaujau/daten/Kartensatz.java index 47d4ed1..cde915a 100644 --- a/src/de/jaujau/daten/Kartensatz.java +++ b/src/de/jaujau/daten/Kartensatz.java @@ -1,12 +1,166 @@ package de.jaujau.daten; +import java.util.Random; /** - * Class Kartensatz + * Diese Klasse Verwaltet den Kartensatz + * @author Sebastian Kacza */ public class Kartensatz { + public Karte kartensatz[]; + int letztekarte; + + /** + * Konstruktor für den Kartensatz + * Erstellt einen Neuen Kartensatz mit 32 Karten in einem Array + * Die Karten haben dabei die Reihenfolge eines Standart Skat Blattes + */ + public Kartensatz() { + letztekarte = 0; + kartensatz = new Karte[32]; + + //Standart Skat Kartensatz erstellen + kartensatz[0] = new Karte(Farbe.KARO, Wert.SIEBEN); + kartensatz[1] = new Karte(Farbe.KARO, Wert.ACHT); + kartensatz[2] = new Karte(Farbe.KARO, Wert.NEUN); + kartensatz[3] = new Karte(Farbe.KARO, Wert.ZEHN); + kartensatz[4] = new Karte(Farbe.KARO, Wert.BUBE); + kartensatz[5] = new Karte(Farbe.KARO, Wert.DAME); + kartensatz[6] = new Karte(Farbe.KARO, Wert.KOENING); + kartensatz[7] = new Karte(Farbe.KARO, Wert.ASS); + + kartensatz[8] = new Karte(Farbe.HERZ, Wert.SIEBEN); + kartensatz[9] = new Karte(Farbe.HERZ, Wert.ACHT); + kartensatz[10] = new Karte(Farbe.HERZ, Wert.NEUN); + kartensatz[11] = new Karte(Farbe.HERZ, Wert.ZEHN); + kartensatz[12] = new Karte(Farbe.HERZ, Wert.BUBE); + kartensatz[13] = new Karte(Farbe.HERZ, Wert.DAME); + kartensatz[14] = new Karte(Farbe.HERZ, Wert.KOENING); + kartensatz[15] = new Karte(Farbe.HERZ, Wert.ASS); + + kartensatz[16] = new Karte(Farbe.PIK, Wert.SIEBEN); + kartensatz[17] = new Karte(Farbe.PIK, Wert.ACHT); + kartensatz[18] = new Karte(Farbe.PIK, Wert.NEUN); + kartensatz[19] = new Karte(Farbe.PIK, Wert.ZEHN); + kartensatz[20] = new Karte(Farbe.PIK, Wert.BUBE); + kartensatz[21] = new Karte(Farbe.PIK, Wert.DAME); + kartensatz[22] = new Karte(Farbe.PIK, Wert.KOENING); + kartensatz[23] = new Karte(Farbe.PIK, Wert.ASS); + + kartensatz[24] = new Karte(Farbe.KREUZ, Wert.SIEBEN); + kartensatz[25] = new Karte(Farbe.KREUZ, Wert.ACHT); + kartensatz[26] = new Karte(Farbe.KREUZ, Wert.NEUN); + kartensatz[27] = new Karte(Farbe.KREUZ, Wert.ZEHN); + kartensatz[28] = new Karte(Farbe.KREUZ, Wert.BUBE); + kartensatz[29] = new Karte(Farbe.KREUZ, Wert.DAME); + kartensatz[30] = new Karte(Farbe.KREUZ, Wert.KOENING); + kartensatz[31] = new Karte(Farbe.KREUZ, Wert.ASS); + + } + + //!!!Funktioniert noch nicht + /** + * 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) { + //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); + } + } + } + + //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++; + } + + } + + + } + + + /** + * legt die Karte mit der KartenID x auf den Ablagestapel + * Speicher die KartenID der zuletzgelegt Karte in "letztekarte" + * @param kartenid ID der Karte die Abgeget werden Soll + */ + public void ablegen(int kartenID) { + if((kartenID >= 0) && (kartenID < 32)){ + kartensatz[kartenID].setAblageort(Ablageort.ABLAGESTAPEL); + letztekarte = kartenID; + } + } + + + /** + * gibt die ID der Kartezurück die als letztes auf dem Ablagestabel gelegt wurde + * @return ID der zuletzt gelegten Karte + */ + public int getletzteKarte() { + return letztekarte; + } + + //Methode get Hand + //Kommt noch + + /** + * Gibt eine Karte aus dem Kartensatz zurück + * @param kartenid ID Der Karte (0 - 31) + * @return Karte auf dem Kartensatz mit der ID x + */ + public Karte getKarte(int kartenID) { + if((kartenID >= 0) && (kartenID < 32)){ + return kartensatz[kartenID]; + } + else { + return null; + } + + } + + //Kommt noch + public void SetWunschfarbe(Farbe farbe) { + + } - + + /** + * Dies Funktion Prüft ob sich auf dem Ziestapel noch mindestes eine Karte Befindet + * @return true wenn keine Karten Vorhanden, false wenn kein Karte vorhanden + */ + private int getZiestapelAnzahl() { + int anzahl = 0; + for(Karte karte: kartensatz) { + if(karte.getAblageort() == Ablageort.ZIESTAPEL) { + anzahl++; + } + } + return anzahl; + } } From 5f53fe854a784348f4e4a6faa97578959c4047b6 Mon Sep 17 00:00:00 2001 From: Sebastian Kacza Date: Wed, 2 Dec 2020 20:59:42 +0100 Subject: [PATCH 2/6] 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() { From fe5d1abea99c4d4eb8b68276d79a79b7f54b3fcb Mon Sep 17 00:00:00 2001 From: Sebastian Kacza Date: Thu, 3 Dec 2020 09:48:44 +0100 Subject: [PATCH 3/6] Klasse Karte fertig, Klasse Kartensatz fertig --- src/de/jaujau/daten/Karte.java | 2 +- src/de/jaujau/daten/Kartensatz.java | 54 ++++++++++++++++++++++++++--- 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/src/de/jaujau/daten/Karte.java b/src/de/jaujau/daten/Karte.java index 96e1b22..1a68c2e 100644 --- a/src/de/jaujau/daten/Karte.java +++ b/src/de/jaujau/daten/Karte.java @@ -36,7 +36,7 @@ public class Karte { * @return Wert der Karte */ public Wert getWERT() { - return WERT; + return WERT; } /** diff --git a/src/de/jaujau/daten/Kartensatz.java b/src/de/jaujau/daten/Kartensatz.java index 7dc5d12..9e1973a 100644 --- a/src/de/jaujau/daten/Kartensatz.java +++ b/src/de/jaujau/daten/Kartensatz.java @@ -1,5 +1,6 @@ package de.jaujau.daten; +import java.util.ArrayList; import java.util.Random; /** @@ -130,6 +131,7 @@ public class Kartensatz { } + //Funktion geprüft /** * gibt die ID der Kartezurück die als letztes auf dem Ablagestabel gelegt wurde * @return ID der zuletzt gelegten Karte @@ -138,9 +140,35 @@ public class Kartensatz { return letztekarte; } - //Methode get Hand - //Kommt noch + + //Funktion geprüft + /** + * Gibt die Karten Indexe einer Spieler Hand zuück + * Wenn keine Karten auf der Hand liegen wird eine Leere ArrayList zurückgegeben + * @param spieler Spieler + * @return ArrayList von Integer welche die KatrenIndexe enthält, + */ + public ArrayList getHand(Spieler spieler) { + ArrayList hand = new ArrayList(); + for(int i = 0; i < 32; i++) { + //Für Spieler + if(spieler == Spieler.SPIELER) { + if(kartensatz[i].getAblageort() == Ablageort.SPIELER) { + hand.add(i); + } + } + //Für Computer + if(spieler == Spieler.COMPUTER) { + if(kartensatz[i].getAblageort() == Ablageort.COMPUTER) { + hand.add(i); + } + } + } + return hand; + } + + //Funktion geprüft /** * Gibt eine Karte aus dem Kartensatz zurück * @param kartenid ID Der Karte (0 - 31) @@ -156,12 +184,28 @@ public class Kartensatz { } - //Methode kommt noch + //Funktion geprüft + /** + * Legt die Farbe fest die als nächstes auf den Ablagestapel gelegt werden muss + * Dafür wird der "Wünscher" (Bube) der jeweiligen Farbe als letze Karte auf dem Ablegestabel eingetragen + * @param farbe Farbe die sich gewünscht wird + */ public void SetWunschfarbe(Farbe farbe) { - + if(farbe == Farbe.KARO) { + letztekarte = 4; //Karo Bube + } + else if (farbe == Farbe.HERZ) { + letztekarte = 12; //Kerz Bube + } + else if (farbe == Farbe.PIK) { + letztekarte = 20; //Pik Bube + } + else if (farbe == Farbe.KREUZ) { + letztekarte = 28; //Kreuz Bube + } } - + //Funktion geprüft /** * Dies Funktion Prüft ob sich auf dem Ziestapel noch mindestes eine Karte Befindet * Wird nur Klassenintern Verwendet From d2892a1437a47403d51eeebb6110ec6536d0ae28 Mon Sep 17 00:00:00 2001 From: ekresse Date: Thu, 3 Dec 2020 09:49:51 +0100 Subject: [PATCH 4/6] Console Message changed --- src/de/jaujau/spiellogik/Anwendung.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/de/jaujau/spiellogik/Anwendung.java b/src/de/jaujau/spiellogik/Anwendung.java index e47e42d..c69e298 100644 --- a/src/de/jaujau/spiellogik/Anwendung.java +++ b/src/de/jaujau/spiellogik/Anwendung.java @@ -100,7 +100,7 @@ public class Anwendung { public static void main(String[] args) { - System.out.println("Hallo Welt"); + System.out.println("Programm gestartet"); Anwendung jaujau = new Anwendung(); jaujau.gui.setVisible(true); From 9b3d7995ea19d0d72519ce4af6fb55ff6df9a2c5 Mon Sep 17 00:00:00 2001 From: ekresse Date: Thu, 3 Dec 2020 11:01:22 +0100 Subject: [PATCH 5/6] Anwendung Update --- src/de/jaujau/spiellogik/Anwendung.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/de/jaujau/spiellogik/Anwendung.java b/src/de/jaujau/spiellogik/Anwendung.java index c69e298..ff56ac0 100644 --- a/src/de/jaujau/spiellogik/Anwendung.java +++ b/src/de/jaujau/spiellogik/Anwendung.java @@ -99,7 +99,6 @@ public class Anwendung { public static void main(String[] args) { - System.out.println("Programm gestartet"); Anwendung jaujau = new Anwendung(); jaujau.gui.setVisible(true); From b4603a085afc8a7e903841ae2c9ca7fb02f71837 Mon Sep 17 00:00:00 2001 From: Sebastian Kacza Date: Thu, 3 Dec 2020 11:03:00 +0100 Subject: [PATCH 6/6] Klasse Karte fertig, Klasse Kartensatz fertig --- src/de/jaujau/daten/Karte.java | 1 + src/de/jaujau/daten/Kartensatz.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/de/jaujau/daten/Karte.java b/src/de/jaujau/daten/Karte.java index 1a68c2e..3643a32 100644 --- a/src/de/jaujau/daten/Karte.java +++ b/src/de/jaujau/daten/Karte.java @@ -42,6 +42,7 @@ public class Karte { /** * Gibt den Ablageort der Karte zurück * @return Ablageort der Karte + * */ public Ablageort getAblageort() { return Ablageort; diff --git a/src/de/jaujau/daten/Kartensatz.java b/src/de/jaujau/daten/Kartensatz.java index 9e1973a..d28c0a8 100644 --- a/src/de/jaujau/daten/Kartensatz.java +++ b/src/de/jaujau/daten/Kartensatz.java @@ -64,6 +64,7 @@ public class Kartensatz { * 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 boolean ziehen(Spieler spieler) { //System.out.println("Start Ziehen");