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.File;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Paths;
|
import java.util.Random;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Scanner;
|
|
||||||
|
|
||||||
public class Spielfeld {
|
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(
|
public Spielfeld() {
|
||||||
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 static void readCSVFile(String filePath) {
|
public void ladeSpielfeld(String dateiPfad) {
|
||||||
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
|
try (BufferedReader br = new BufferedReader(new FileReader(dateiPfad))) {
|
||||||
String line;
|
String line;
|
||||||
System.out.println("\nInhalt der Datei:");
|
int zeilenZaehler = 0;
|
||||||
|
|
||||||
|
|
||||||
while ((line = br.readLine()) != null) {
|
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) {
|
} 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