BoardLoader Klasse erstellt und Spielfelder implementiert

currentStatus
Vickvick2002 2025-01-03 15:25:12 +01:00
parent 9a8fe119e0
commit 6515ea54c4
1 changed files with 100 additions and 0 deletions

View File

@ -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]);
}
}