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 {
|
||||
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;
|
||||
|
||||
import java.util.ArrayList;
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
//!!!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;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@@ -99,8 +99,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);
|
||||
|
||||
|
Reference in New Issue
Block a user