BoardLoader Klasse erstellt und Spielfelder implementiert
parent
9a8fe119e0
commit
6515ea54c4
|
@ -0,0 +1,100 @@
|
||||||
|
package PR2.HitoriSpiel.GUI;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class BoardLoader {
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Gibt eine Liste aller verfügbaren Spielfeld-Dateien im Package zurück.
|
||||||
|
* @return Eine Liste von relativen Pfaden zu CSV-Dateien.
|
||||||
|
*/
|
||||||
|
/*public static List<String> loadBoardsAsList() {
|
||||||
|
// Harte Kodierung der bekannten Dateien
|
||||||
|
return List.of(
|
||||||
|
"Hitori4x4_leicht.csv",
|
||||||
|
"Hitori5x5leicht.csv",
|
||||||
|
"Hitori8x8leicht.csv",
|
||||||
|
"Hitori8x8medium.csv",
|
||||||
|
"Hitori10x10medium.csv",
|
||||||
|
"Hitori15x15_medium.csv"
|
||||||
|
);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
public static List<String> loadBoardsAsList() {
|
||||||
|
List<String> boardFiles = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
// Lade das Verzeichnis aus dem Klassenpfad
|
||||||
|
File directory = new File(BoardLoader.class.getResource("/persistent/Hitori_Spielfelder/").toURI());
|
||||||
|
|
||||||
|
// Überprüfen, ob das Verzeichnis existiert und es sich um ein Verzeichnis handelt
|
||||||
|
if (directory.exists() && directory.isDirectory()) {
|
||||||
|
for (File file : directory.listFiles()) {
|
||||||
|
if (file.isFile() && file.getName().endsWith(".csv")) {
|
||||||
|
boardFiles.add(file.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new IOException("Das Verzeichnis existiert nicht oder ist kein Verzeichnis.");
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.err.println("Fehler beim Laden der Spielfelder: " + e.getMessage());
|
||||||
|
}
|
||||||
|
return boardFiles;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static int[][] loadBoard(String resourcePath) throws IOException {
|
||||||
|
List<int[]> rows = new ArrayList<>();
|
||||||
|
|
||||||
|
try (InputStream inputStream = BoardLoader.class.getResourceAsStream(resourcePath);
|
||||||
|
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
|
||||||
|
|
||||||
|
if (inputStream == null) {
|
||||||
|
throw new IOException("Ressourcendatei nicht gefunden: " + resourcePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("Lade Datei: " + resourcePath);
|
||||||
|
|
||||||
|
String line;
|
||||||
|
int rowCount = 0; // Zähler für die gelesenen Zeilen
|
||||||
|
|
||||||
|
// Lies die Zeilen bis zur Spielfeldgröße (n Zeilen)
|
||||||
|
while ((line = reader.readLine()) != null) {
|
||||||
|
if (line.trim().isEmpty() || line.startsWith("//")) {
|
||||||
|
continue; // Ignoriere leere Zeilen oder Kommentare
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("Gelesene Zeile: " + line);
|
||||||
|
|
||||||
|
String[] values = line.split(",");
|
||||||
|
int[] row = new int[values.length];
|
||||||
|
for (int i = 0; i < values.length; i++) {
|
||||||
|
try {
|
||||||
|
row[i] = Integer.parseInt(values[i].trim());
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
throw new IOException("Ungültiger Wert in der Datei: " + values[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rows.add(row);
|
||||||
|
rowCount++;
|
||||||
|
|
||||||
|
// Beende das Lesen, wenn die gewünschte Anzahl von Zeilen erreicht ist
|
||||||
|
if (rowCount == values.length) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rows.isEmpty()) {
|
||||||
|
throw new IOException("Die Datei " + resourcePath + " enthält keine Daten.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Konvertiere die Liste von Zeilen in ein 2D-Array
|
||||||
|
return rows.toArray(new int[0][0]);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue