Texturenpakte Verwaltung und Test hinzugefügt

This commit is contained in:
Sebastian Kacza
2020-12-12 16:14:26 +01:00
parent d809f936a5
commit 1267792408
5 changed files with 298 additions and 14 deletions

View File

@@ -1,10 +1,14 @@
package de.jaujau.daten; package de.jaujau.UnitTests;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import de.jaujau.daten.Farbe;
import de.jaujau.daten.Kartensatz;
import de.jaujau.daten.Spieler;
class TEST_Kartensatz { class TEST_Kartensatz {
private Kartensatz satz; private Kartensatz satz;
@@ -82,12 +86,12 @@ class TEST_Kartensatz {
//Spieler legt Karte auf Ablagestapel //Spieler legt Karte auf Ablagestapel
satz.ablegen(karteSpieler); satz.ablegen(karteSpieler);
assertTrue(karteSpieler == satz.letztekarte); assertTrue(karteSpieler == satz.getletzteKarte());
assertTrue(satz.getHand(Spieler.SPIELER).size()==0); assertTrue(satz.getHand(Spieler.SPIELER).size()==0);
//Computer legt Karte auf Ablagestapel //Computer legt Karte auf Ablagestapel
satz.ablegen(karteComputer); satz.ablegen(karteComputer);
assertTrue(karteComputer == satz.letztekarte); assertTrue(karteComputer == satz.getletzteKarte());
assertTrue(satz.getHand(Spieler.COMPUTER).size()==0); assertTrue(satz.getHand(Spieler.COMPUTER).size()==0);
} }

View File

@@ -1,23 +1,49 @@
package de.jaujau.daten; package de.jaujau.UnitTests;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
import java.awt.Image;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import de.jaujau.daten.Texturenpaket;
class TEST_Texturenpaket { class TEST_Texturenpaket {
private Texturenpaket paket; private Texturenpaket paket;
@BeforeEach @BeforeEach
void setUp() throws Exception { void setUp() throws Exception {
paket = new Texturenpaket("/home/sebastian/testpacket.zip");
} }
@Test @Test
void PacketLaden() { void FehlerFreiesPaketLaden() {
paket = new Texturenpaket("/home/sebastian/testpaket.zip");
assertTrue(paket.ladePacket()); 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);
}
} }
} }

View File

@@ -1,10 +1,12 @@
package de.jaujau.daten; package de.jaujau.UnitTests;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import de.jaujau.daten.Texturenpakete;
class TEST_Texturenpakete { class TEST_Texturenpakete {
private Texturenpakete pakete; private Texturenpakete pakete;
@@ -16,7 +18,16 @@ class TEST_Texturenpakete {
@Test @Test
void test() { void test() {
fail("Not yet implemented"); 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);
}
} }
} }

View File

@@ -1,6 +1,15 @@
package de.jaujau.daten; package de.jaujau.daten;
import java.awt.Image; 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 * Verwaltet ein Texturenpackt
@@ -9,8 +18,8 @@ import java.awt.Image;
*/ */
public class Texturenpaket { public class Texturenpaket {
private final String name; private String name;
private final int level; private int level;
private final String pfad; private final String pfad;
@@ -30,16 +39,80 @@ public class Texturenpaket {
* @return Paket vollständig laden, true/false * @return Paket vollständig laden, true/false
*/ */
public boolean ladePacket() { public boolean ladePacket() {
System.out.println("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(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; return true;
} }
/** /**
* Gibt ein Bild das dem Texturenpacket zurück * Gibt alle Bilddatein für ein Texturen Paket zurück
* @param KartenID der Textur * @return Image der Texturen des Peketes als Image Array
* @return Image der Textur
*/ */
public Image getTextur(int KartenID) { 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; return null;
} }
@@ -60,4 +133,75 @@ public class Texturenpaket {
public int getLevel() { public int getLevel() {
return level; return level;
} }
/**
* Testet das Texturenpaket auf vollständigkeit
* @return Paket vollständig, true/false
*/
private boolean testePaket() {
System.out.println("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(Zeile);
if(Zeile.contains("name:")) {
PaketName = true;
}
if(Zeile.contains("level:")) {
PaketLevel = true;
}
}
scanner.close();
if(!PaketName || !PaketLevel) {
System.out.println("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("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("Texturen Paket ist OK");
return true;
}
} }

View File

@@ -1,5 +1,7 @@
package de.jaujau.daten; package de.jaujau.daten;
import java.awt.Image;
import java.util.ArrayList;
/** /**
* Diese Klasse Verwaltet die Texturenpackete des Spiels * Diese Klasse Verwaltet die Texturenpackete des Spiels
@@ -7,11 +9,108 @@ package de.jaujau.daten;
*/ */
public class Texturenpakete { public class Texturenpakete {
private ArrayList<Texturenpaket> TexturenpaketListe;
private Image Texturen[];
private int AktivesPaket;
public Texturenpakete(){ public Texturenpakete(){
TexturenpaketListe = new ArrayList<Texturenpaket>();
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;
}
} }