diff --git a/.classpath b/.classpath index 9b07da8..afbfe1a 100644 --- a/.classpath +++ b/.classpath @@ -2,5 +2,6 @@ + diff --git a/.project b/.project index a71a1b2..d95d958 100644 --- a/.project +++ b/.project @@ -14,4 +14,15 @@ org.eclipse.jdt.core.javanature + + + 1606897925456 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/src/de/jaujau/UnitTests/TEST_Kartensatz.java b/src/de/jaujau/UnitTests/TEST_Kartensatz.java new file mode 100755 index 0000000..6649284 --- /dev/null +++ b/src/de/jaujau/UnitTests/TEST_Kartensatz.java @@ -0,0 +1,98 @@ +package de.jaujau.UnitTests; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import de.jaujau.daten.Farbe; +import de.jaujau.daten.Kartensatz; +import de.jaujau.daten.Spieler; + +class TEST_Kartensatz { + + private Kartensatz satz; + + @BeforeEach + public void Setup() { + satz = new Kartensatz(); + assertNotNull(satz); + } + + @Test + void ziehenSpieler() { + for(int i = 0; i < 32; i++) { + //Spieler hat zu angang keine Karten auf der Hand + assertTrue(satz.getHand(Spieler.SPIELER).size()==i); + + //Karte Ziehen + assertTrue(satz.ziehen(Spieler.SPIELER)); + + //Spieler hat eine Karte auf der Hand + assertTrue(satz.getHand(Spieler.SPIELER).size()==i+1); + } + } + + @Test + void ziehenComputer() { + for(int i = 0; i < 32; i++) { + //Computer hat zu angang keine Karten auf der Hand + assertTrue(satz.getHand(Spieler.SPIELER).size()==i); + + //Karte Ziehen + assertTrue(satz.ziehen(Spieler.SPIELER)); + + //Computer hat eine Karte auf der Hand + assertTrue(satz.getHand(Spieler.SPIELER).size()==i+1); + } + } + + @Test + void WunschfarbeSetzen() { + satz.SetWunschfarbe(Farbe.HERZ); + assertTrue(satz.getKarte(satz.getletzteKarte()).getFARBE()==Farbe.HERZ); + + satz.SetWunschfarbe(Farbe.KARO); + assertTrue(satz.getKarte(satz.getletzteKarte()).getFARBE()==Farbe.KARO); + + satz.SetWunschfarbe(Farbe.KREUZ); + assertTrue(satz.getKarte(satz.getletzteKarte()).getFARBE()==Farbe.KREUZ); + + satz.SetWunschfarbe(Farbe.PIK); + assertTrue(satz.getKarte(satz.getletzteKarte()).getFARBE()==Farbe.PIK); + } + + @Test + void legeKarte() { + + //Kein Spieler hat ein Karte + assertTrue(satz.getHand(Spieler.SPIELER).size()==0); + assertTrue(satz.getHand(Spieler.COMPUTER).size()==0); + + //Computer und Spieler Zihen jeweils eine Karte + assertTrue(satz.ziehen(Spieler.SPIELER)); + assertTrue(satz.ziehen(Spieler.COMPUTER)); + + //Jetzt muss jeder Spieler ein KArte auf der Hand haben + assertTrue(satz.getHand(Spieler.SPIELER).size()==1); + assertTrue(satz.getHand(Spieler.COMPUTER).size()==1); + + //KartenIndex der Spieler auslesen + int karteSpieler = satz.getHand(Spieler.SPIELER).get(0); + int karteComputer = satz.getHand(Spieler.COMPUTER).get(0); + + //Die Karten drüfen nicht gleich sein + assertTrue(karteSpieler != karteComputer); + + //Spieler legt Karte auf Ablagestapel + satz.ablegen(karteSpieler); + assertTrue(karteSpieler == satz.getletzteKarte()); + assertTrue(satz.getHand(Spieler.SPIELER).size()==0); + + //Computer legt Karte auf Ablagestapel + satz.ablegen(karteComputer); + assertTrue(karteComputer == satz.getletzteKarte()); + assertTrue(satz.getHand(Spieler.COMPUTER).size()==0); + + } +} diff --git a/src/de/jaujau/UnitTests/TEST_Texturenpaket.java b/src/de/jaujau/UnitTests/TEST_Texturenpaket.java new file mode 100755 index 0000000..0d52b10 --- /dev/null +++ b/src/de/jaujau/UnitTests/TEST_Texturenpaket.java @@ -0,0 +1,49 @@ +package de.jaujau.UnitTests; + +import static org.junit.jupiter.api.Assertions.*; + +import java.awt.Image; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import de.jaujau.daten.Texturenpaket; + +class TEST_Texturenpaket { + + private Texturenpaket paket; + + @BeforeEach + void setUp() throws Exception { + + + } + + @Test + void FehlerFreiesPaketLaden() { + paket = new Texturenpaket("/home/sebastian/testpaket.zip"); + assertTrue(paket.ladePacket()); + System.out.println("Name des Texturen Paketes: " + paket.getName()); + System.out.println("Level des Texturen Paketes: " + paket.getLevel()); + } + + @Test + void FehlerHaftesPaketLaden() { + paket = new Texturenpaket("/home/sebastian/testpaket_fehler.zip"); + assertFalse(paket.ladePacket()); + System.out.println("Name des Fehlerhaften Texturen Paketes: " + paket.getName()); + System.out.println("Level des Fehlerhaften Texturen Paketes: " + paket.getLevel()); + } + + + @Test + void TexturenAusgeben() { + paket = new Texturenpaket("/home/sebastian/testpaket.zip"); + assertTrue(paket.ladePacket()); + Image Bilder[] = paket.getTexturen(); + for(int i = 0; i < 32; i++) { + assertTrue(Bilder[i] != null); + } + } + +} diff --git a/src/de/jaujau/UnitTests/TEST_Texturenpakete.java b/src/de/jaujau/UnitTests/TEST_Texturenpakete.java new file mode 100755 index 0000000..d0a9a8d --- /dev/null +++ b/src/de/jaujau/UnitTests/TEST_Texturenpakete.java @@ -0,0 +1,33 @@ +package de.jaujau.UnitTests; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import de.jaujau.daten.Texturenpakete; + +class TEST_Texturenpakete { + + private Texturenpakete pakete; + + @BeforeEach + void setUp() throws Exception { + pakete = new Texturenpakete(); + } + + @Test + void test() { + assertTrue(pakete.getAnzahlPakete()==0); + assertTrue(pakete.addPaket("/home/sebastian/testpaket.zip")); + assertTrue(pakete.getAnzahlPakete()==1); + assertTrue(pakete.setAktivesPaket(0)); + assertTrue(pakete.getAktivesPaket()==0); + System.out.println(pakete.getName(0)); + System.out.println(pakete.getName(0)); + for(int i = 0; i < 32; i++) { + assertTrue(pakete.getTextur(i)!=null); + } + } + +} diff --git a/src/de/jaujau/daten/Ablageort.java b/src/de/jaujau/daten/Ablageort.java new file mode 100755 index 0000000..79aa24a --- /dev/null +++ b/src/de/jaujau/daten/Ablageort.java @@ -0,0 +1,5 @@ +package de.jaujau.daten; + +public enum Ablageort { + SPIELER, COMPUTER, ABLAGESTAPEL, ZIEHSTAPEL +} diff --git a/src/de/jaujau/daten/Farbe.java b/src/de/jaujau/daten/Farbe.java new file mode 100755 index 0000000..d6f8702 --- /dev/null +++ b/src/de/jaujau/daten/Farbe.java @@ -0,0 +1,5 @@ +package de.jaujau.daten; + +public enum Farbe { + PIK, KREUZ, HERZ, KARO +} diff --git a/src/de/jaujau/daten/Karte.java b/src/de/jaujau/daten/Karte.java index 5498278..72873f5 100644 --- a/src/de/jaujau/daten/Karte.java +++ b/src/de/jaujau/daten/Karte.java @@ -1,14 +1,68 @@ package de.jaujau.daten; -import java.util.*; - /** - * Class Karte + * Klasse Karte + * Verwaltet die Daten einer Spielkarte + * @author Sebastian Kacza */ public class Karte { + private final Farbe FARBE; + private final 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.ZIEHSTAPEL; + } + + /** + * 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 + "]"; + } + } diff --git a/src/de/jaujau/daten/Kartensatz.java b/src/de/jaujau/daten/Kartensatz.java index 7bc5284..e69945c 100644 --- a/src/de/jaujau/daten/Kartensatz.java +++ b/src/de/jaujau/daten/Kartensatz.java @@ -1,14 +1,222 @@ package de.jaujau.daten; -import java.util.*; - +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); + + } + + + /** + * Zieht eine Zufällige karte aus dem Ziehstapel für einen bestimmten Spieler und gibt den Karten dem Spieler auf die Hand + * Wenn keine Karten mehr auf dem Ziehstapel sind werden alle Karten vom Ablagestabel auf den Ziehstapel verschoben + * @param spieler Spieler der die Karte auf die Hand bekommen soll + */ + public boolean ziehen(Spieler spieler) { + //System.out.println("Start Ziehen"); + //Ziehstapel Prüfen + int ZiehstapelAnzahl = getZiehstapelAnzahl(); //ZiehstapelAnzahl könte durch direckten Medoden aufruf ersetzt werden???? + if(ZiehstapelAnzahl < 1) { //ZiehstapelAnzahl könte durch direckten Medoden aufruf ersetzt werden???? + //Alle Karten vom Ablagestapel ausßer letze auf den Ziehstapel verschieben + for(int i = 0; i < 32; i++) { + if((kartensatz[i].getAblageort() == Ablageort.ABLAGESTAPEL) && (i != letztekarte)) { + kartensatz[i].setAblageort(Ablageort.ZIEHSTAPEL); + } + } + } + + ZiehstapelAnzahl = getZiehstapelAnzahl(); //ZiehstapelAnzahl könte durch direckten Medoden aufruf ersetzt werden???? + //System.out.println("ZiehStapel Anzahl " + ZiehstapelAnzahl); + if(ZiehstapelAnzahl > 0) { //ZiehstapelAnzahl könte durch direckten Medoden aufruf ersetzt werden???? + //Ziekarte bestimmen und + //Zienummer auswählen + //System.out.println("Nummer wählen"); + Random random = new Random(); + int auswahl = random.nextInt(ZiehstapelAnzahl); //ZiehstapelAnzahl könte durch direckten Medoden aufruf ersetzt werden???? + //System.out.println("Karte Ziehen " + auswahl); + + //Wenn Karten auf dem Ziehspabel verfügbar sind + int ZiehstapelIndex = 0; + for(int i = 0; i < 32; i++) { + //System.out.println("ZielStapelIndex " + ZiehstapelIndex); + if(kartensatz[i].getAblageort() == Ablageort.ZIEHSTAPEL) { + //System.out.println("Suche " + auswahl + " ZieIndex " + ZiehstapelIndex + " KartenIndex " + i); + if(auswahl == ZiehstapelIndex) { + //System.out.println("Ziehe Karte " + i + " " + kartensatz[i].toString()); + //Karte im Ziehstaple 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; + } + ZiehstapelIndex++; + } + + } + } + 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; + } + } + + + /** + * 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; + } + + + /** + * 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; + } + + + /** + * 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; + } + + } + + + /** + * 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 + } + } + /** + * Dies Funktion Prüft ob sich auf dem Ziehstapel noch mindestes eine Karte Befindet + * Wird nur Klassenintern Verwendet + * @return true wenn keine Karten Vorhanden, false wenn kein Karte vorhanden + */ + private int getZiehstapelAnzahl() { + int anzahl = 0; + for(Karte karte: kartensatz) { + if(karte.getAblageort() == Ablageort.ZIEHSTAPEL) { + anzahl++; + } + } + return anzahl; + } } diff --git a/src/de/jaujau/daten/Spieler.java b/src/de/jaujau/daten/Spieler.java new file mode 100755 index 0000000..faaea4d --- /dev/null +++ b/src/de/jaujau/daten/Spieler.java @@ -0,0 +1,5 @@ +package de.jaujau.daten; + +public enum Spieler { + SPIELER, COMPUTER +} diff --git a/src/de/jaujau/daten/Spielerdaten.java b/src/de/jaujau/daten/Spielerdaten.java new file mode 100644 index 0000000..cd205fb --- /dev/null +++ b/src/de/jaujau/daten/Spielerdaten.java @@ -0,0 +1,25 @@ +package de.jaujau.daten; +import de.jaujau.spiellogik.Spiel; + +/** + * Class Spieler + */ + +public class Spielerdaten { + + int punktestand; //Punktestand des Spielers + String name /*= Spieler.getSpieler()*/; // Name des Spielers + + public void punktestandErhoehen(int punkt){ // Methode zum Erhoehen des Punktestandes + punktestand += punkt ; + + } + + public int getPunktestand() { + return punktestand; + } + + public String getName() { + return name; + } +} diff --git a/src/de/jaujau/daten/Spielerverwaltung.java b/src/de/jaujau/daten/Spielerverwaltung.java index 8c7a4d8..0de3003 100644 --- a/src/de/jaujau/daten/Spielerverwaltung.java +++ b/src/de/jaujau/daten/Spielerverwaltung.java @@ -1,60 +1,59 @@ package de.jaujau.daten; -import java.util.*; -/** - * Class Spielerverwaltung - */ + public class Spielerverwaltung { - // - // Fields - // + private int level; - private unsigned int level; + private Spielerdaten spieler; + + private String name = "Mark Zuckerberg"; //Testeintrag /** * arraylist von Spieler */ - private Spieler spieler; // // Constructors - // - public Spielerverwaltung () { }; - + // // // Methods - // - - // // Accessor methods // - /** * Set the value of level * @param newVar the new value of level */ - public void setLevel (unsigned int newVar) { - level = newVar; + public void setLevel (int newlevel) { + level = newlevel; } - /** * Get the value of level * @return the value of level */ - public unsigned int getLevel () { + public int getLevel () { return level; } + + + /** + * Get the value of level + * @return the value of level + */ + public String getName () { + + return name; + } /** * Set the value of spieler * arraylist von Spieler * @param newVar the new value of spieler */ - public void setSpieler (Spieler newVar) { - spieler = newVar; + public void setSpieler (Spielerdaten newSpieler) { + spieler = newSpieler; } /** @@ -62,7 +61,7 @@ public class Spielerverwaltung { * arraylist von Spieler * @return the value of spieler */ - public Spieler getSpieler () { + public Spielerdaten getSpieler () { return spieler; } @@ -74,6 +73,7 @@ public class Spielerverwaltung { */ public void leseDaten() { + throw new UnsupportedOperationException(); } @@ -81,7 +81,10 @@ public class Spielerverwaltung { */ public void speichernDaten() { + throw new UnsupportedOperationException(); } - + public Spielerverwaltung() { + //Implementieren + }; } diff --git a/src/de/jaujau/daten/Texturenpaket.java b/src/de/jaujau/daten/Texturenpaket.java new file mode 100755 index 0000000..4d4a89a --- /dev/null +++ b/src/de/jaujau/daten/Texturenpaket.java @@ -0,0 +1,207 @@ +package de.jaujau.daten; + +import java.awt.Image; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.util.Scanner; +import java.util.zip.ZipEntry; +import java.util.zip.ZipException; +import java.util.zip.ZipFile; +import javax.imageio.ImageIO; + + +/** + * Verwaltet ein Texturenpackt + * @author Sebastian Kacza + * + */ +public class Texturenpaket { + + private String name; + private int level; + private final String pfad; + + + /** + * Erstellt ein neues Texturenpackt + * @param Pfad zu der Zip-Datei des Texturenpacketes + */ + public Texturenpaket(String Pfad) { + name = "Nicht geladen"; + level = 0; + pfad = Pfad; + } + + + /** + * Läd die Packetinformationen und Testet das Packet auf Vollständigkeit + * @return Paket vollständig laden, true/false + */ + public boolean ladePacket() { + System.out.println("TEXTURENPAKET: Lade Paket"); + if(testePaket()) { + //Paket ist OK + + //Paket Informationen Laden + + try { + File zipDatei = new File(pfad); + ZipFile paketDatei = new ZipFile(zipDatei); + ZipEntry zipInhaltPaketTXT = paketDatei.getEntry("paket.txt"); + InputStream eingabeStromTXT = paketDatei.getInputStream(zipInhaltPaketTXT); + Scanner scanner = new Scanner(eingabeStromTXT); + while(scanner.hasNext()) { + String Zeile = scanner.next(); + String Spalte[] = Zeile.split(":"); + //System.out.println(Spalte.length); + if(Spalte.length==2) { + System.out.println("TEXTURENPAKET: " + Spalte[1]); + //Name Auslesen + if(Spalte[0].equals("name")) { + name = Spalte[1]; + } + //Level Auslesen + if(Spalte[0].equals("level")) { + level = Integer.parseInt(Spalte[1]); + } + + } + } + scanner.close(); + paketDatei.close(); + + } catch (ZipException e) { + e.printStackTrace(); + return false; + } catch (IOException e) { + e.printStackTrace(); + return false; + } + + } + else { + return false; + } + return true; + } + + + /** + * Gibt alle Bilddatein für ein Texturen Paket zurück + * @return Image der Texturen des Peketes als Image Array + */ + public Image[] getTexturen() { + if(testePaket()) { + + try { + File zipDatei = new File(pfad); + ZipFile paketDatei = new ZipFile(zipDatei); + Image Bilder[] = new Image[32]; + + for(int i = 0; i < 32; i++) { + ZipEntry zipInhaltTextur = paketDatei.getEntry(i+".png"); + InputStream eingabeStromTextur = paketDatei.getInputStream(zipInhaltTextur); + Bilder[i] = ImageIO.read(eingabeStromTextur); + } + return Bilder; + + } catch (ZipException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + } + return null; + } + + + /** + * Gibt den Namen des Texturenpacket zurück + * @return Name des Texturenpacketes + */ + public String getName() { + return name; + } + + + /** + * Gibt den Level Wert zurück der mindestens Benötigt wird um das Packet zu benutzten + * @return Mindest Level + */ + public int getLevel() { + return level; + } + + + /** + * Testet das Texturenpaket auf vollständigkeit + * @return Paket vollständig, true/false + */ + private boolean testePaket() { + System.out.println("TEXTURENPAKET: Teste Paket:"); + //Testen ob Zip-Datei vorhanden und lesabar ist + File zipDatei = new File(pfad); + if(zipDatei.exists() || zipDatei.canRead()) { + + try { + //Zip Datei öffnen + ZipFile paketDatei = new ZipFile(zipDatei); + + //Paket Konfigurations Datei Prüfen + ZipEntry zipInhaltPaketTXT = paketDatei.getEntry("paket.txt"); + InputStream eingabeStromTXT = paketDatei.getInputStream(zipInhaltPaketTXT); + Scanner scanner = new Scanner(eingabeStromTXT); + boolean PaketName = false; + boolean PaketLevel = false; + while(scanner.hasNext()) { + //Prüfen ob Konfigurations Datei die Einträge "name" und "level" enthält + String Zeile = scanner.next(); + System.out.println("TEXTURENPAKET: " + Zeile); + if(Zeile.contains("name:")) { + PaketName = true; + } + if(Zeile.contains("level:")) { + PaketLevel = true; + } + } + scanner.close(); + if(!PaketName || !PaketLevel) { + System.out.println("TEXTURENPAKET: Paket Konfiguration fehlerhaft"); + return false; + } + + //Texturen Prüfen + for(int i = 0; i < 32; i++) { + ZipEntry zipInhaltTextur = paketDatei.getEntry(i+".png"); + InputStream eingabeStromTextur = paketDatei.getInputStream(zipInhaltTextur); + Image bild = ImageIO.read(eingabeStromTextur); + if(bild == null) { + System.out.println("TEXTURENPAKET: Datei: " + i + ".png nicht gefunden"); + return false; + } + } + + paketDatei.close(); + + } catch (ZipException e) { + //Zip Datei nicht leesbar + e.printStackTrace(); + return false; + } catch (IOException e) { + //Zip Datei nicht lesbar + e.printStackTrace(); + return false; + } + + } + else { + return false; + } + + //Alles OK + System.out.println("TEXTURENPAKET: Texturen Paket ist OK"); + return true; + } +} diff --git a/src/de/jaujau/daten/Texturenpakete.java b/src/de/jaujau/daten/Texturenpakete.java index b53a81d..e87bab1 100644 --- a/src/de/jaujau/daten/Texturenpakete.java +++ b/src/de/jaujau/daten/Texturenpakete.java @@ -1,14 +1,113 @@ package de.jaujau.daten; -import java.util.*; - +import java.awt.Image; +import java.util.ArrayList; /** - * Class Texturenpakete + * Diese Klasse Verwaltet die Texturenpackete des Spiels + * @author Sebastian Kacza */ public class Texturenpakete { + private ArrayList TexturenpaketListe; + private Image Texturen[]; + private int AktivesPaket; + + + public Texturenpakete(){ + TexturenpaketListe = new ArrayList(); + AktivesPaket = 0; + } + + + /** + * Gibt die Anzahl der Vorhanden Texturenpakete aus + * @return Anzahl Texturenpakte + */ + public int getAnzahlPakete() { + return TexturenpaketListe.size(); + } + + /** + * Gibt das min Level für ein bestimtes Paket zurück + * @param PaketNummer + * @return min Level + */ + public int getLevel(int PaketNr) { + if((PaketNr >= 0) && (PaketNr < TexturenpaketListe.size())) { + return TexturenpaketListe.get(PaketNr).getLevel(); + } + return 0; + } + + + /** + * Gibt den Namen eines Bestiment Paketes zurück + * @param PaketNummer + * @return Name des Paketes + */ + public String getName(int PaketNr) { + if((PaketNr >= 0) && (PaketNr < TexturenpaketListe.size())) { + return TexturenpaketListe.get(PaketNr).getName(); + } + return ""; + } + + + /** + * Gibt die Nummer des AktivenPakes aus + * @return Nummer des Aktiven Paketes + */ + public int getAktivesPaket() { + return AktivesPaket; + } + + + /** + * Setzt das aktive Paket + * @param PaketNr des Paketes + * @return Setzen erfolgreich true/false + */ + public boolean setAktivesPaket(int PaketNr) { + if((PaketNr >= 0) && (PaketNr < TexturenpaketListe.size())) { + AktivesPaket = PaketNr; + + //Texturen Laden + Texturen = TexturenpaketListe.get(PaketNr).getTexturen(); + return true; + } + return false; + } + + + /** + * Fügt ein Neues Testuren Paket hinzu + * Das Paket wird vor dem einfügen auf Vollständfigkeit geprüft + * @param Pfad + * @return + */ + public boolean addPaket(String Pfad) { + Texturenpaket NeuesPaket = new Texturenpaket(Pfad); + if(NeuesPaket.ladePacket()) { + TexturenpaketListe.add(NeuesPaket); + return true; + } + + return false; + } + + /** + * Gibt eine Textur des aktuellen Paketes als Image zurück + * @param KartenNr der Textur + * @return Textur als Image + */ + public Image getTextur(int KartenNr) { + if((KartenNr >= 0) && (KartenNr < 32)) { + return Texturen[KartenNr]; + } + return null; + } } diff --git a/src/de/jaujau/daten/Wert.java b/src/de/jaujau/daten/Wert.java new file mode 100755 index 0000000..41b1a47 --- /dev/null +++ b/src/de/jaujau/daten/Wert.java @@ -0,0 +1,5 @@ +package de.jaujau.daten; + +public enum Wert { + SIEBEN, ACHT, NEUN, ZEHN, BUBE, DAME, KOENING, ASS +} diff --git a/src/de/jaujau/gui/GUI.java b/src/de/jaujau/gui/GUI.java index 8fdf1eb..9c95836 100644 --- a/src/de/jaujau/gui/GUI.java +++ b/src/de/jaujau/gui/GUI.java @@ -1,22 +1,33 @@ package de.jaujau.gui; -import java.util.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JFrame; + /** * Class GUI */ -public class GUI { +public class GUI extends JFrame implements ActionListener{ // // Fields // - + private static final long serialVersionUID = 1L; + // // Constructors // - public GUI () { }; + public GUI () { } + +@Override +public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + +} // // Methods diff --git a/src/de/jaujau/gui/JauJauGUI.java b/src/de/jaujau/gui/JauJauGUI.java deleted file mode 100644 index 9cdc21b..0000000 --- a/src/de/jaujau/gui/JauJauGUI.java +++ /dev/null @@ -1,123 +0,0 @@ -package de.jaujau.gui; - -import java.awt.EventQueue; -import java.awt.Image; - -import javax.swing.JFrame; -import javax.swing.JButton; -import java.awt.BorderLayout; -import javax.swing.JPanel; -import javax.imageio.ImageIO; -import javax.swing.BoxLayout; -import javax.swing.Icon; - -import java.awt.Color; -import java.awt.Dimension; -import javax.swing.JLabel; -import javax.swing.ImageIcon; -import javax.swing.SwingConstants; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.IOException; -import java.net.URL; -import java.awt.Component; -import java.awt.Font; - -public class JauJauGUI { - - private JFrame frame; - - /** - * Launch the application. - */ - public static void main(String[] args) { - EventQueue.invokeLater(new Runnable() { - public void run() { - try { - JauJauGUI window = new JauJauGUI(); - window.frame.setVisible(true); - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - } - - /** - * Create the application. - */ - public JauJauGUI() { - initialize(); - } - - /** - * Initialize the contents of the frame. - */ - - - //Test GUI für JauJau - - - private void initialize() { - frame = new JFrame(); - frame.setBounds(100, 100, 783, 762); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.getContentPane().setLayout(new BorderLayout(0, 0)); - - JPanel panel_top = new JPanel(); - panel_top.setPreferredSize(new Dimension(200, 100)); - panel_top.setBackground(new Color(0, 0, 128)); - frame.getContentPane().add(panel_top, BorderLayout.NORTH); - panel_top.setLayout(new BorderLayout(0, 0)); - - JLabel lblNewLabel_1 = new JLabel("JauJau"); - lblNewLabel_1.setForeground(Color.WHITE); - lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER); - lblNewLabel_1.setInheritsPopupMenu(false); - lblNewLabel_1.setIgnoreRepaint(false); - lblNewLabel_1.setFont(new Font("Tahoma", Font.BOLD, 40)); - lblNewLabel_1.setVerticalAlignment(SwingConstants.CENTER); - panel_top.add(lblNewLabel_1, BorderLayout.CENTER); - - JPanel panel_side = new JPanel(); - panel_side.setBackground(new Color(100, 149, 237)); - panel_side.setPreferredSize(new Dimension(200, 400)); - frame.getContentPane().add(panel_side, BorderLayout.WEST); - panel_side.setLayout(new BorderLayout(0, 0)); - - JPanel panel_buttons = new JPanel(); - panel_buttons.setBackground(new Color(0, 0, 128)); - panel_buttons.setPreferredSize(new Dimension(50, 200)); - panel_side.add(panel_buttons, BorderLayout.WEST); - panel_buttons.setLayout(new BorderLayout(0, 0)); - - JPanel panel = new JPanel(); - panel.setBackground(new Color(0, 0, 153)); - panel.setPreferredSize(new Dimension(50, 50)); - panel_buttons.add(panel, BorderLayout.NORTH); - panel.setLayout(new BorderLayout(0, 0)); - - - JLabel lblNewLabel = new JLabel(""); - lblNewLabel.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - panel_side.setVisible(false); - } - }); - lblNewLabel.setPreferredSize(new Dimension(50, 50)); - lblNewLabel.setAlignmentX(Component.CENTER_ALIGNMENT); - lblNewLabel.setHorizontalTextPosition(SwingConstants.CENTER); - lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER); - ImageIcon imageIcon = new ImageIcon(new ImageIcon("C:\\Users\\Elmar\\Pictures\\exit.png").getImage().getScaledInstance(40, 40, Image.SCALE_DEFAULT)); - lblNewLabel.setIcon(imageIcon); - panel.add(lblNewLabel, BorderLayout.CENTER); - - JPanel panel_main = new JPanel(); - panel_main.setPreferredSize(new Dimension(600, 600)); - frame.getContentPane().add(panel_main, BorderLayout.CENTER); - } - -} diff --git a/src/de/jaujau/gui/Menue_GUI.java b/src/de/jaujau/gui/Menue_GUI.java new file mode 100644 index 0000000..bc40257 --- /dev/null +++ b/src/de/jaujau/gui/Menue_GUI.java @@ -0,0 +1,240 @@ +package de.jaujau.gui; + +import java.awt.EventQueue; +import java.awt.Image; + +import javax.swing.JFrame; +import javax.swing.JButton; +import java.awt.BorderLayout; +import javax.swing.JPanel; +import javax.imageio.ImageIO; +import javax.swing.BoxLayout; +import javax.swing.Icon; + +import java.awt.Color; +import java.awt.Dimension; +import javax.swing.JLabel; +import javax.swing.ImageIcon; +import javax.swing.SwingConstants; +import javax.swing.SwingUtilities; + +import de.jaujau.daten.Spielerverwaltung; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.awt.Component; +import java.awt.Font; + +public class Menue_GUI extends GUI implements ActionListener { + + /** + * + */ + private static final long serialVersionUID = 1L; + private Spielerverwaltung spielerverwaltung; + private JPanel contentPane; + private boolean shown = true; + + + + /** + * Create the application. + * @param speicherung + */ + public Menue_GUI(Spielerverwaltung speicherung) { + this.spielerverwaltung = speicherung; + speicherung.getSpieler(); + System.out.println("Menü-GUI aufgerufen"); + initialize(this.spielerverwaltung); + + } + /** + * Initialize the contents of the frame. + */ + + //Test GUI für JauJau + + private void initialize(Spielerverwaltung speicherung) { + this.spielerverwaltung = speicherung; + setBounds(100, 100, 963, 762); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + getContentPane().setLayout(new BorderLayout(0, 0)); + setVisible(true); + + JPanel panel_top = new JPanel(); + panel_top.setPreferredSize(new Dimension(200, 100)); + panel_top.setBackground(new Color(0, 0, 128)); + this.getContentPane().add(panel_top, BorderLayout.NORTH); + panel_top.setLayout(new BorderLayout(0, 0)); + + JLabel lblNewLabel_1 = new JLabel("JauJau"); + lblNewLabel_1.setForeground(Color.WHITE); + lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER); + lblNewLabel_1.setInheritsPopupMenu(false); + lblNewLabel_1.setIgnoreRepaint(false); + lblNewLabel_1.setFont(new Font("Tahoma", Font.BOLD, 40)); + lblNewLabel_1.setVerticalAlignment(SwingConstants.CENTER); + panel_top.add(lblNewLabel_1, BorderLayout.CENTER); + + JPanel panel_side = new JPanel(); + panel_side.setBackground(new Color(0, 51, 153)); + panel_side.setPreferredSize(new Dimension(270, 400)); + this.getContentPane().add(panel_side, BorderLayout.WEST); + panel_side.setLayout(new BorderLayout(0, 0)); + + JPanel panel_buttons = new JPanel(); + panel_buttons.setBackground(new Color(0, 0, 128)); + panel_buttons.setPreferredSize(new Dimension(50, 200)); + panel_side.add(panel_buttons, BorderLayout.WEST); + panel_buttons.setLayout(null); + + JPanel panel = new JPanel(); + panel.setBounds(0, 0, 50, 50); + panel.setBackground(new Color(0, 0, 153)); + panel.setPreferredSize(new Dimension(50, 50)); + panel_buttons.add(panel); + panel.setLayout(new BorderLayout(0, 0)); + + + JLabel minimize = new JLabel(""); + minimize.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if(shown == true) { + panel_side.setPreferredSize(new Dimension(50, panel_side.getHeight())); + System.out.println("Update GUI 50"); + panel_side.revalidate(); + panel_side.repaint(); + shown = false; + }else{ + panel_side.setPreferredSize(new Dimension(270, panel_side.getHeight())); + System.out.println("Update GUI 270"); + panel_side.revalidate(); + panel_side.repaint(); + shown = true; + } + } + }); + minimize.setPreferredSize(new Dimension(50, 50)); + minimize.setAlignmentX(Component.CENTER_ALIGNMENT); + minimize.setHorizontalTextPosition(SwingConstants.CENTER); + minimize.setHorizontalAlignment(SwingConstants.CENTER); + ImageIcon imageIcon = new ImageIcon(new ImageIcon("C:\\Users\\Elmar\\Pictures\\exit.png").getImage().getScaledInstance(40, 40, Image.SCALE_DEFAULT)); + minimize.setIcon(imageIcon); + panel.add(minimize, BorderLayout.CENTER); + + JPanel buttons = new JPanel(); + buttons.setBackground(new Color(51, 51, 153)); + panel_side.add(buttons, BorderLayout.CENTER); + buttons.setLayout(new BorderLayout(0, 0)); + + JPanel panel_4 = new JPanel(); + panel_4.setBackground(new Color(0, 51, 153)); + buttons.add(panel_4, BorderLayout.CENTER); + panel_4.setLayout(null); + + JLabel start = new JLabel("Spiel starten"); + start.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + //Spiel starten Spiel_GUI und schließe Menue_GUI (wechsel) und Spiellogikaufrufen + System.out.println("Start Game"); + } + }); + start.setBackground(Color.WHITE); + start.setForeground(Color.WHITE); + start.setFont(new Font("Segoe UI", Font.PLAIN, 26)); + start.setHorizontalAlignment(SwingConstants.CENTER); + start.setAlignmentX(Component.CENTER_ALIGNMENT); + start.setBounds(0, 0, 220, 31); + panel_4.add(start); + + JLabel score = new JLabel("Highscore"); + score.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + //Rechtes Panel ändern und Highscore aus jaujaudaten abrufen. + System.out.println("Highscore"); + } + }); + score.setBackground(Color.WHITE); + score.setForeground(Color.WHITE); + score.setFont(new Font("Segoe UI", Font.PLAIN, 26)); + score.setHorizontalAlignment(SwingConstants.CENTER); + score.setAlignmentX(Component.CENTER_ALIGNMENT); + score.setBounds(0, 42, 220, 31); + panel_4.add(score); + + JLabel settings = new JLabel("Einstellungen"); + settings.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + //Rechtes Panel ändern und Einstellungen aufrufen + System.out.println("Highscore"); + } + }); + settings.setBackground(Color.WHITE); + settings.setForeground(Color.WHITE); + settings.setFont(new Font("Segoe UI", Font.PLAIN, 26)); + settings.setHorizontalAlignment(SwingConstants.CENTER); + settings.setAlignmentX(Component.CENTER_ALIGNMENT); + settings.setBounds(0, 84, 220, 31); + panel_4.add(settings); + + JLabel help = new JLabel("Hilfe"); + help.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + //Starte Hilfe GUI Menue_GUI bleibt geöffnet + System.out.println("Hilfe"); + } + }); + help.setBackground(Color.WHITE); + help.setForeground(Color.WHITE); + help.setFont(new Font("Segoe UI", Font.PLAIN, 26)); + help.setHorizontalAlignment(SwingConstants.CENTER); + help.setAlignmentX(Component.CENTER_ALIGNMENT); + help.setBounds(0, 126, 220, 31); + panel_4.add(help); + + JPanel panel_main = new JPanel(); + panel_main.setPreferredSize(new Dimension(600, 600)); + this.getContentPane().add(panel_main, BorderLayout.CENTER); + panel_main.setLayout(new BoxLayout(panel_main, BoxLayout.X_AXIS)); + + JPanel panel_1 = new JPanel(); + panel_1.setBackground(new Color(102, 153, 255)); + panel_main.add(panel_1); + panel_1.setLayout(new BorderLayout(0, 0)); + + JPanel panel_2 = new JPanel(); + panel_2.setBackground(new Color(51, 153, 204)); + panel_1.add(panel_2, BorderLayout.CENTER); + panel_2.setLayout(new BorderLayout(0, 0)); + + JLabel lblNewLabel_2 = new JLabel("Name: "); + lblNewLabel_2.setForeground(Color.WHITE); + lblNewLabel_2.setFont(new Font("Segoe UI", Font.PLAIN, 26)); + lblNewLabel_2.setBackground(new Color(51, 153, 204)); + panel_2.add(lblNewLabel_2, BorderLayout.NORTH); + lblNewLabel_2.setHorizontalAlignment(SwingConstants.CENTER); + lblNewLabel_2.setVerticalAlignment(SwingConstants.TOP); + lblNewLabel_2.setText("Name: " + speicherung.getName()); + + JPanel panel_3 = new JPanel(); + panel_3.setBackground(new Color(51, 153, 204)); + panel_2.add(panel_3, BorderLayout.CENTER); + } + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + + } +} diff --git a/src/de/jaujau/gui/Menü_GUI.java b/src/de/jaujau/gui/Menü_GUI.java deleted file mode 100644 index 5cd164b..0000000 --- a/src/de/jaujau/gui/Menü_GUI.java +++ /dev/null @@ -1,34 +0,0 @@ -package de.jaujau.gui; - -import java.util.*; - - -/** - * Class Menü_GUI - */ -public class Menü_GUI { - - // - // Fields - // - - - // - // Constructors - // - public Menü_GUI () { }; - - // - // Methods - // - - - // - // Accessor methods - // - - // - // Other methods - // - -} diff --git a/src/de/jaujau/spiellogik/Anwendung.java b/src/de/jaujau/spiellogik/Anwendung.java index d586ef4..a2fe9c7 100644 --- a/src/de/jaujau/spiellogik/Anwendung.java +++ b/src/de/jaujau/spiellogik/Anwendung.java @@ -1,93 +1,93 @@ package de.jaujau.spiellogik; -import java.util.*; - import de.jaujau.daten.Spielerverwaltung; import de.jaujau.daten.Texturenpakete; import de.jaujau.gui.GUI; +import de.jaujau.gui.Menue_GUI; -/** - * Class Anwendung - */ public class Anwendung { - // - // Fields - // - private Spiel aktuellesSpiel; private Texturenpakete texturenpakete; private Spielerverwaltung speicherung; - private GUI gui; - + private static Menue_GUI gui; + // // Constructors // - public Anwendung () { }; - + public Anwendung() { + + speicherung = new Spielerverwaltung(); + gui = new Menue_GUI(speicherung); + + }; // // Methods - // - // // Accessor methods // - /** * Set the value of aktuellesSpiel + * * @param newVar the new value of aktuellesSpiel */ - public void setAktuellesSpiel (Spiel newVar) { - aktuellesSpiel = newVar; + public void setAktuellesSpiel(Spiel newSpiel) { + aktuellesSpiel = newSpiel; } /** * Get the value of aktuellesSpiel + * * @return the value of aktuellesSpiel */ - public Spiel getAktuellesSpiel () { + public Spiel getAktuellesSpiel() { return aktuellesSpiel; } /** * Set the value of texturenpakete + * * @param newVar the new value of texturenpakete */ - public void setTexturenpakete (Texturenpakete newVar) { - texturenpakete = newVar; + public void setTexturenpakete(Texturenpakete newTexture) { + texturenpakete = newTexture; } /** * Get the value of texturenpakete + * * @return the value of texturenpakete */ - public Texturenpakete getTexturenpakete () { + public Texturenpakete getTexturenpakete() { return texturenpakete; } /** * Set the value of speicherung + * * @param newVar the new value of speicherung */ - public void setSpeicherung (Spielerverwaltung newVar) { - speicherung = newVar; + public void setSpeicherung(Spielerverwaltung newVer) { + speicherung = newVer; } /** * Get the value of speicherung + * * @return the value of speicherung */ - public Spielerverwaltung getSpeicherung () { + public Spielerverwaltung getSpeicherung() { return speicherung; } /** * Set the value of gui + * * @param newVar the new value of gui */ - public void setGui (GUI newVar) { + public static void setGui(Menue_GUI newVar) { gui = newVar; } @@ -95,19 +95,38 @@ public class Anwendung { * Get the value of gui * @return the value of gui */ - public GUI getGui () { + public static GUI getGui () { return gui; } + + // + // Other methods + // + public static void openGui() { // GUI oeffnen! + Anwendung jaujau = new Anwendung(); + jaujau.gui.setVisible(true); + } + /** + */ + public static void main(String[] args){ + openGui(); // // Other methods // - /** - */ - public void main() + /** + * Launch the application. + */ + + /*public static void main(String[] args) { + System.out.println("Programm gestartet"); + Anwendung jaujau = new Anwendung(); + jaujau.gui.setVisible(true); + + + }*/ + } - - } diff --git a/src/de/jaujau/spiellogik/Spiel.java b/src/de/jaujau/spiellogik/Spiel.java index 72e6818..4c5572c 100644 --- a/src/de/jaujau/spiellogik/Spiel.java +++ b/src/de/jaujau/spiellogik/Spiel.java @@ -1,129 +1,130 @@ package de.jaujau.spiellogik; -import java.util.*; +import java.util.Random; +import de.jaujau.daten.Farbe; import de.jaujau.daten.Kartensatz; +import de.jaujau.daten.Spieler; +import de.jaujau.daten.Wert; /** - * Class Spiel + * Diese Klasse prüft die Spielaktionen und alterniert zwischen Spieler und Computer + * @author Fabian Keller */ public class Spiel { - // - // Fields - // - - private spieler spieler; - private spieler amZug; - private boolean aussetzen; - private boolean zwei_ziehen; - private Kartensatz kartensatz; - - // - // Constructors - // - public Spiel () { }; - - // - // Methods - // - - - // - // Accessor methods - // - - /** - * Set the value of spieler - * @param newVar the new value of spieler - */ - public void setSpieler (spieler newVar) { - spieler = newVar; - } - - /** - * Get the value of spieler - * @return the value of spieler - */ - public spieler getSpieler () { - return spieler; - } - - /** - * Set the value of amZug - * @param newVar the new value of amZug - */ - public void setAmZug (spieler newVar) { - amZug = newVar; - } - - /** - * Get the value of amZug - * @return the value of amZug - */ - public spieler getAmZug () { - return amZug; - } - - /** - * Set the value of aussetzen - * @param newVar the new value of aussetzen - */ - public void setAussetzen (boolean newVar) { - aussetzen = newVar; - } - - /** - * Get the value of aussetzen - * @return the value of aussetzen - */ - public boolean getAussetzen () { - return aussetzen; - } - - /** - * Set the value of zwei_ziehen - * @param newVar the new value of zwei_ziehen - */ - public void setZwei_ziehen (boolean newVar) { - zwei_ziehen = newVar; - } - - /** - * Get the value of zwei_ziehen - * @return the value of zwei_ziehen - */ - public boolean getZwei_ziehen () { - return zwei_ziehen; - } - - /** - * Set the value of kartensatz - * @param newVar the new value of kartensatz - */ - public void setKartensatz (Kartensatz newVar) { - kartensatz = newVar; - } - - /** - * Get the value of kartensatz - * @return the value of kartensatz - */ - public Kartensatz getKartensatz () { - return kartensatz; - } - - // - // Other methods - // - - /** - * @param name - */ - private void zug(spieler name) - { - } - - + private Spieler amZug; + private boolean spielgestartet = false; + private boolean aussetzen; + private boolean zwei_ziehen; + private int kartenZiehen; + private Kartensatz kartensatz; + private Farbe gelegteFarbe; + private Wert gelegterWert; + + + /** + * alterniert zwischen Spieler und Computer und legt Beginner fest + */ + private void spiel() { + if(!spielgestartet) { //Starter durch zufall bestimmen + Random zufallszahl = new Random(); + int zahl = zufallszahl.nextInt(1); + if(zahl == 1) { + amZug = Spieler.SPIELER; + } + else { + amZug = Spieler.COMPUTER; + } + spielgestartet = true; + kartensatz.ablegen(zufallszahl.nextInt(31)); + return; + } + if(amZug == Spieler.SPIELER) { + amZug = Spieler.COMPUTER; + } + else { + amZug= Spieler.SPIELER; + } + } + + + /** + * prüft ob eine Karte mit einem bestimmten Kartenindex gelegt werden kann + * @param kartenindex + */ + private void karteLegen(int kartenindex) { //Nur Strukturüberlegung, WÜNSCHER? + zugMoeglich(); + Farbe legenFarbe; + Wert legenWert; + legenFarbe = kartensatz.getKarte(kartenindex).getFARBE(); + legenWert = kartensatz.getKarte(kartenindex).getWERT(); + + if(zwei_ziehen && legenWert == Wert.SIEBEN) { + kartensatz.ablegen(kartenindex); + spiel(); + return; + } + if(aussetzen && legenWert == Wert.ACHT) { + kartensatz.ablegen(kartenindex); + spiel(); + return; + } + if(!aussetzen && !zwei_ziehen) { + if(legenFarbe == gelegteFarbe) { + kartensatz.ablegen(kartenindex); + spiel(); + return; + } + if(legenWert == gelegterWert) { + kartensatz.ablegen(kartenindex); + spiel(); + return; + } + } + if(aussetzen) { + spiel(); + aussetzen = false; + } + } + + + /** + * prüft ob eine Karte gezogen werden kann + */ + private void karteZiehen(){ + zugMoeglich(); + if(zwei_ziehen) { + for(int i = 0; i < kartenZiehen; i++) { + kartensatz.ziehen(amZug); + } + spiel(); + kartenZiehen = 0; + zwei_ziehen = false; + } + if(aussetzen) { + spiel(); + aussetzen = false; + } + } + + + /** + * prüft ob ein Zug überhaupt möglich ist und ließt Werte zum weiterarbeiten ein + */ + private void zugMoeglich() { + gelegteFarbe = kartensatz.getKarte(kartensatz.getletzteKarte()).getFARBE(); + gelegterWert = kartensatz.getKarte(kartensatz.getletzteKarte()).getWERT(); + if(gelegterWert == Wert.ACHT) { + aussetzen = true; + } + else { + aussetzen = false; + } + if(gelegterWert == Wert.SIEBEN) { + zwei_ziehen = true; + kartenZiehen += 2; + } + } } diff --git a/src/de/jaujau/spiellogik/Spieler.java b/src/de/jaujau/spiellogik/Spieler.java deleted file mode 100644 index d46a724..0000000 --- a/src/de/jaujau/spiellogik/Spieler.java +++ /dev/null @@ -1,76 +0,0 @@ -package de.jaujau.spiellogik; - -import java.util.*; - - -/** - * Class Spieler - */ -public class Spieler { - - // - // Fields - // - - private unsigned int punktestand; - private String NAME; - - // - // Constructors - // - public Spieler () { }; - - // - // Methods - // - - - // - // Accessor methods - // - - /** - * Set the value of punktestand - * @param newVar the new value of punktestand - */ - public void setPunktestand (unsigned int newVar) { - punktestand = newVar; - } - - /** - * Get the value of punktestand - * @return the value of punktestand - */ - public unsigned int getPunktestand () { - return punktestand; - } - - /** - * Set the value of NAME - * @param newVar the new value of NAME - */ - public void setNAME (String newVar) { - NAME = newVar; - } - - /** - * Get the value of NAME - * @return the value of NAME - */ - public String getNAME () { - return NAME; - } - - // - // Other methods - // - - /** - * @param punkte - */ - public void erhoehePunktestand(unsigned int punkte) - { - } - - -} diff --git a/src/de/jaujau/spiellogik/Spielzug.java b/src/de/jaujau/spiellogik/Spielzug.java index 11ee6c6..05ccddd 100644 --- a/src/de/jaujau/spiellogik/Spielzug.java +++ b/src/de/jaujau/spiellogik/Spielzug.java @@ -1,6 +1,7 @@ package de.jaujau.spiellogik; import de.jaujau.daten.Kartensatz; +import de.jaujau.daten.Spielerdaten; /** @@ -35,7 +36,7 @@ public class Spielzug { * @param spieler * @param kartensatz */ - public static void legen(Spieler spieler, Kartensatz kartensatz) + public static void legen(Spielerdaten spieler, Kartensatz kartensatz) { } @@ -44,7 +45,7 @@ public class Spielzug { * @param spieler * @param kartensatz */ - public static void aussetzen(Spieler spieler, Kartensatz kartensatz) + public static void aussetzen(Spielerdaten spieler, Kartensatz kartensatz) { } @@ -54,7 +55,7 @@ public class Spielzug { * @param kartensatz * @param anzahl */ - public static void ziehen(Spieler spieler, Kartensatz kartensatz, int anzahl) + public static void ziehen(Spielerdaten spieler, Kartensatz kartensatz, int anzahl) { }