Merge branch 'patch-1' of https://gitlab.imn.htwk-leipzig.de/weicker/inb1-a-jaujau.git into patch-1
This commit is contained in:
@@ -2,11 +2,68 @@ package de.jaujau.daten;
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Karte
|
* Klasse Karte
|
||||||
|
* Verwaltet die Daten einer Spielkarte
|
||||||
|
* @author Sebastian Kacza
|
||||||
*/
|
*/
|
||||||
public class Karte {
|
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 ist nur für Debug-Ausgaben notwendig und kann Später entfernt werden!!!
|
||||||
|
* @return String mit den Karten Eigenschaften
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Karte [FARBE=" + FARBE + ", WERT=" + WERT + ", Ablageort=" + Ablageort + "]";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -1,12 +1,226 @@
|
|||||||
package de.jaujau.daten;
|
package de.jaujau.daten;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//!!!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 boolean ziehen(Spieler spieler) {
|
||||||
|
//System.out.println("Start Ziehen");
|
||||||
|
//Ziestapel Prüfen
|
||||||
|
int ZiestapelAnzahl = getZiestapelAnzahl();
|
||||||
|
if(ZiestapelAnzahl < 1) {
|
||||||
|
//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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Kartensatz
|
* 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 class Kartensatz {
|
public void ablegen(int kartenID) {
|
||||||
|
if((kartenID >= 0) && (kartenID < 32)){
|
||||||
|
kartensatz[kartenID].setAblageort(Ablageort.ABLAGESTAPEL);
|
||||||
|
letztekarte = kartenID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Funktion geprüft
|
||||||
|
/**
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//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<Integer> getHand(Spieler spieler) {
|
||||||
|
ArrayList<Integer> hand = new ArrayList<Integer>();
|
||||||
|
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)
|
||||||
|
* @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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//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
|
||||||
|
* @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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user