diff --git a/src/main/java/de/deversmann/domain/Spielfeld.java b/src/main/java/de/deversmann/domain/Spielfeld.java index 16dd8bd..f398eed 100644 --- a/src/main/java/de/deversmann/domain/Spielfeld.java +++ b/src/main/java/de/deversmann/domain/Spielfeld.java @@ -4,51 +4,107 @@ import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; -import java.nio.file.Paths; -import java.util.Map; -import java.util.Scanner; +import java.util.Random; public class Spielfeld { - public static void main(String[] args) { - Scanner sc = new Scanner(System.in); - String folderPath = Paths.get("").toAbsolutePath() + File.separator + "src" + File.separator + "Spielfelder" + File.separator; + private int[][] feld; + private String[][] zustand; // "grau", "schwarz", "weiß" - Map felder = Map.of( - 1, "4x4.csv", - 2, "5x5.csv", - 3, "8x8_leicht.csv", - 4, "8x8_medium.csv", - 5, "10x10.csv", - 6, "15x15.csv"); - System.out.println("Verfügbare Spielfeldgrößen:"); - felder.forEach((key, value) -> System.out.println(key + ": " + value.replace(".csv", ""))); - - System.out.println("Welche Spielfeldgröße wollen Sie bespielen?"); - int wahl = sc.nextInt(); - - if (!felder.containsKey(wahl)) { - System.out.println("Ungültige Auswahl"); - return; - } - - - String gewählteDatei = felder.get(wahl); - System.out.println("Sie haben die Spielfeldgröße '" + gewählteDatei.replace(".csv", "") + "' gewählt"); - - - readCSVFile(folderPath + gewählteDatei); + public Spielfeld() { } - public static void readCSVFile(String filePath) { - try (BufferedReader br = new BufferedReader(new FileReader(filePath))) { + public void ladeSpielfeld(String dateiPfad) { + try (BufferedReader br = new BufferedReader(new FileReader(dateiPfad))) { String line; - System.out.println("\nInhalt der Datei:"); + int zeilenZaehler = 0; + + while ((line = br.readLine()) != null) { - System.out.println(line); + zeilenZaehler++; + } + + br.close(); + + feld = new int[zeilenZaehler][]; + zustand = new String[zeilenZaehler][]; + + try (BufferedReader br2 = new BufferedReader(new FileReader(dateiPfad))) { + int row = 0; + while ((line = br2.readLine()) != null) { + String[] werte = line.split(","); + feld[row] = new int[werte.length]; + zustand[row] = new String[werte.length]; + + for (int col = 0; col < werte.length; col++) { + feld[row][col] = Integer.parseInt(werte[col]); + zustand[row][col] = "grau"; + } + + row++; + } } } catch (IOException e) { - System.err.println("Fehler beim Lesen der Datei: " + e.getMessage()); + System.err.println("Fehler beim Laden des Spielfelds: " + e.getMessage()); } } + + public void ladeZufaelligesSpielfeld(String ordnerPfad) { + File ordner = new File(ordnerPfad); + File[] dateien = ordner.listFiles((dir, name) -> name.endsWith(".csv")); + + if (dateien != null && dateien.length > 0) { + Random random = new Random(); + File zufallsDatei = dateien[random.nextInt(dateien.length)]; + ladeSpielfeld(zufallsDatei.getAbsolutePath()); + } else { + System.err.println("Keine CSV-Dateien im Verzeichnis gefunden!"); + } + } + + public void setzeZustand(int x, int y, String neuerZustand) { + if (istImBereich(x, y)) { + zustand[x][y] = neuerZustand; + } else { + System.err.println("Koordinaten außerhalb des Spielfelds!"); + } + } + + public String getZustand(int x, int y) { + if (istImBereich(x, y)) { + return zustand[x][y]; + } else { + System.err.println("Koordinaten außerhalb des Spielfelds!"); + return null; + } + } + + public int getWert(int x, int y) { + if (istImBereich(x, y)) { + return feld[x][y]; + } else { + System.err.println("Koordinaten außerhalb des Spielfelds!"); + return -1; + } + } + + public void reset() { + for (int i = 0; i < zustand.length; i++) { + for (int j = 0; j < zustand[i].length; j++) { + zustand[i][j] = "grau"; + } + } + } + + public int getBreite() { + return feld[0].length; + } + + public int getHoehe() { + return feld.length; + } + + private boolean istImBereich(int x, int y) { + return x >= 0 && x < feld.length && y >= 0 && y < feld[0].length; + } }