diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java index 2460a76..621eca0 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java @@ -5,6 +5,7 @@ import PR2.HitoriSpiel.Domain.HitoriSolutionLoader; import javax.swing.*; import java.awt.*; +import javax.swing.JPanel; import java.io.IOException; import java.io.InputStream; import java.util.List; @@ -68,8 +69,8 @@ public class StartMenu extends JFrame { List boardFileNames = BoardLoader.loadBoardsAsList(); System.out.println("Verfügbare Spielfelder: " + boardFileNames); - if (boardFileNames.isEmpty()) { - JOptionPane.showMessageDialog(this, "Keine Spielfelder gefunden.", "Information", JOptionPane.INFORMATION_MESSAGE); + if (boardFileNames == null || boardFileNames.isEmpty()) { + JOptionPane.showMessageDialog(this, "Keine Spielfelder gefunden.", "Fehler", JOptionPane.ERROR_MESSAGE); return; } @@ -91,74 +92,23 @@ public class StartMenu extends JFrame { if (option == JOptionPane.OK_OPTION) { String selectedFile = (String) boardSelector.getSelectedItem(); System.out.println("Ausgewählte Datei: " + selectedFile); - if (selectedFile != null) { - try { - String resourcePath = "/persistent/Hitori_Spielfelder/" + selectedFile; - System.out.println("Lade Datei von Pfad: " + resourcePath); - - - int[][] boardData = loadBoard(resourcePath); - List solutionCoordinates = HitoriSolutionLoader.loadSolution(resourcePath); - - HitoriBoard hitoriBoard = new HitoriBoard(boardData, solutionCoordinates); // Stelle sicher, dass die Lösung korrekt geladen wird - GameBoard gameBoard = new GameBoard(hitoriBoard); - - loadGameBoard2(gameBoard, solutionCoordinates); - //loadGameBoard(boardData); - // addGameControls(gameBoard); - - System.out.println("Verfügbare Spielfelder: " + boardFileNames); - System.out.println("Ausgewählte Datei: " + selectedFile); - System.out.println("Lade Datei von Pfad: " + resourcePath); - - - } catch (Exception ex) { - System.err.println("Fehler beim Laden der Datei: " + ex.getMessage()); - JOptionPane.showMessageDialog(this, "Fehler beim Laden des Spielfelds: " + ex.getMessage(), "Fehler", JOptionPane.ERROR_MESSAGE); - } + // Lade das ausgewählte Spielfeld + System.out.println("Ich bin drin."); + loadAndDisplayBoard(selectedFile); } } } private void randomBoard() { - // Lade alle verfügbaren Spielfeld-Dateien List boardFileNames = BoardLoader.loadBoardsAsList(); - - // Überprüfe, ob Dateien verfügbar sind - if (boardFileNames.isEmpty()) { + if (boardFileNames == null || boardFileNames.isEmpty()) { JOptionPane.showMessageDialog(this, "Keine Spielfelder gefunden.", "Fehler", JOptionPane.ERROR_MESSAGE); return; } - - // Wähle eine zufällige Datei String randomFile = boardFileNames.get(new Random().nextInt(boardFileNames.size())); System.out.println("Zufällige Datei gewählt: " + randomFile); - - try { - // Lade das zufällige Spielfeld - String resourcePath = "/persistent/Hitori_Spielfelder/" + randomFile; - System.out.println("Lade Datei von Pfad: " + resourcePath); - - InputStream inputStream = getClass().getResourceAsStream(resourcePath); - if (inputStream == null) { - throw new IOException("Ressourcendatei nicht gefunden: " + resourcePath); - } - - // Spielfeld-Daten laden - int[][] boardData = BoardLoader.loadBoard(resourcePath); - List solutionCoordinates = HitoriSolutionLoader.loadSolution(resourcePath); - - // Spielfeld erstellen und anzeigen - HitoriBoard hitoriBoard = new HitoriBoard(boardData, solutionCoordinates); - GameBoard gameBoard = new GameBoard(hitoriBoard); - loadGameBoard2(gameBoard, solutionCoordinates); - - } catch (IOException e) { - // Fehler beim Laden des Spielfelds - JOptionPane.showMessageDialog(this, "Fehler beim Laden des Spielfelds: " + e.getMessage(), "Fehler", JOptionPane.ERROR_MESSAGE); - e.printStackTrace(); - } + loadAndDisplayBoard(randomFile); } @@ -174,7 +124,7 @@ public class StartMenu extends JFrame { return button; } - private void loadGameBoard2(GameBoard gameBoard,List solutionCoordinates) { + private void loadGameBoard(GameBoard gameBoard, List solutionCoordinates) { mainPanel.removeAll(); mainPanel.setLayout(new BorderLayout()); mainPanel.add(gameBoard, BorderLayout.CENTER); @@ -182,13 +132,25 @@ public class StartMenu extends JFrame { mainPanel.repaint(); } - private void loadGameBoard(int[][] boardData) { - // Neues Panel für das Spielfeld - mainPanel.removeAll(); - mainPanel.setLayout(new BorderLayout()); - mainPanel.add(new GameBoard(new HitoriBoard(boardData, List.of())), BorderLayout.CENTER); - mainPanel.revalidate(); - mainPanel.repaint(); + private void loadAndDisplayBoard(String selectedFile) { + try { + String resourcePath = "/persistent/Hitori_Spielfelder/" + selectedFile; + System.out.println("Lade Datei von Pfad: " + resourcePath); + + int[][] boardData = loadBoard(resourcePath); + List solutionCoordinates = HitoriSolutionLoader.loadSolution(resourcePath); + + HitoriBoard hitoriBoard = new HitoriBoard(boardData, solutionCoordinates); // Stelle sicher, dass die Lösung korrekt geladen wird + GameBoard gameBoard = new GameBoard(hitoriBoard); + //GameBoard gameBoard = new GameBoard(new HitoriBoard(boardData, solutionCoordinates)); + loadGameBoard(gameBoard, solutionCoordinates); + + System.out.println("Ausgewählte Datei: " + selectedFile); + System.out.println("Lade Datei von Pfad: " + resourcePath); + + } catch (Exception e) { + JOptionPane.showMessageDialog(this, "Fehler beim Laden des Spielfelds: " + e.getMessage(), "Fehler", JOptionPane.ERROR_MESSAGE); + } }