Verbesserung der Spielfeld Klasse um Einsatz im Programm zu ermöglichen als auch die Anforderungen zu erfüllen zwecks Ausgabe und Farben
parent
53b012f6a7
commit
bb8a2ad265
|
@ -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<Integer, String> 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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue