From 2c864c3efbe296f9989e1641b035283bbf0ce202 Mon Sep 17 00:00:00 2001 From: Sebastian Kacza Date: Wed, 2 Dec 2020 18:36:13 +0100 Subject: [PATCH] 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; + } }