From cb97bd32eb13ad345c82693d57f23ba316a4a504 Mon Sep 17 00:00:00 2001 From: Vickvick2002 Date: Fri, 3 Jan 2025 18:18:25 +0100 Subject: [PATCH] Klasse erweitert --- .../java/PR2/HitoriSpiel/GUI/StartMenu.java | 72 ++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java index 3b985d7..da6cf9d 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java @@ -1,10 +1,11 @@ package PR2.HitoriSpiel.GUI; import PR2.HitoriSpiel.Domain.HitoriBoard; +import PR2.HitoriSpiel.Domain.HitoriSolutionLoader; import javax.swing.*; import java.awt.*; -import java.io.File; +import java.io.IOException; import java.io.InputStream; import java.util.List; @@ -93,8 +94,20 @@ public class StartMenu extends JFrame { String resourcePath = "/persistent/Hitori_Spielfelder/" + selectedFile; System.out.println("Lade Datei von Pfad: " + resourcePath); + int[][] boardData = BoardLoader.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); + 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()); @@ -121,6 +134,14 @@ public class StartMenu extends JFrame { return button; } + /*private void loadGameBoard(GameBoard gameBoard) { + mainPanel.removeAll(); + mainPanel.setLayout(new BorderLayout()); + mainPanel.add(gameBoard, BorderLayout.CENTER); + mainPanel.revalidate(); + mainPanel.repaint(); + }*/ + private void loadGameBoard(int[][] boardData) { // Neues Panel für das Spielfeld mainPanel.removeAll(); @@ -130,4 +151,53 @@ public class StartMenu extends JFrame { mainPanel.repaint(); } + private void addGameControls(GameBoard gameBoard) { + JPanel controlPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); // Buttons zentriert anordnen + + // "Zurücksetzen"-Button + JButton resetButton = new JButton("Zurücksetzen"); + resetButton.addActionListener(e -> { + gameBoard.resetBoard(); // Zurücksetzen des Spielfelds + JOptionPane.showMessageDialog(this, "Spielfeld zurückgesetzt!", "Info", JOptionPane.INFORMATION_MESSAGE); + }); + + // "Validieren"-Button + JButton validateButton = new JButton("Validieren"); + validateButton.addActionListener(e -> { + boolean isValid = gameBoard.validateCurrentBoard(); // Prüfen, ob das Spielfeld korrekt gelöst ist + if (isValid) { + JOptionPane.showMessageDialog(this, "Das Spielfeld ist korrekt gelöst!", "Erfolg", JOptionPane.INFORMATION_MESSAGE); + } else { + JOptionPane.showMessageDialog(this, "Das Spielfeld enthält Fehler!", "Fehler", JOptionPane.ERROR_MESSAGE); + } + }); + + + controlPanel.add(resetButton); + controlPanel.add(validateButton); + + // Control-Panel unterhalb des Spielfelds hinzufügen + mainPanel.add(controlPanel, BorderLayout.SOUTH); + mainPanel.revalidate(); + mainPanel.repaint(); + } + + /* private void loadAndShowGameBoard(String resourcePath) { + try { + int[][] boardData = BoardLoader.loadBoard(resourcePath); + List solutionCoordinates = HitoriSolutionLoader.loadSolution(resourcePath); + + HitoriBoard hitoriBoard = new HitoriBoard(boardData, solutionCoordinates); + GameBoard gameBoard = new GameBoard(hitoriBoard); + + loadGameBoard(boardData); + addGameControls(gameBoard); + } catch (IOException ex) { + JOptionPane.showMessageDialog(this, "Fehler beim Laden des Spielfelds: " + ex.getMessage(), "Fehler", JOptionPane.ERROR_MESSAGE); + ex.printStackTrace(); + } + }*/ + + + }