From 3d0f808daf245c3f1edcc251cf9d660cb2ccff6d Mon Sep 17 00:00:00 2001 From: Vickvick2002 Date: Sun, 5 Jan 2025 14:18:05 +0100 Subject: [PATCH] =?UTF-8?q?L=C3=B6senanzeige=20verbessert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/PR2/HitoriSpiel/Domain/HitoriValidator.java | 12 ++++++++---- .../src/main/java/PR2/HitoriSpiel/GUI/GameBoard.java | 8 +------- .../src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java | 8 ++------ 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/Domain/HitoriValidator.java b/Hitori/src/main/java/PR2/HitoriSpiel/Domain/HitoriValidator.java index 44e10aa..a69c1cf 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/Domain/HitoriValidator.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/Domain/HitoriValidator.java @@ -5,7 +5,6 @@ import java.util.List; /** * Validates the Hitori board against the solution. */ - public class HitoriValidator { private final HitoriBoard board; @@ -19,7 +18,6 @@ public class HitoriValidator { * @param solutionCoordinates The coordinates of the correct black cells in "row,column" format. * @return true if the current board matches the solution, false otherwise. */ - public boolean validateBoard(List solutionCoordinates) { for (String coordinate : solutionCoordinates) { String[] parts = coordinate.split(","); @@ -33,9 +31,15 @@ public class HitoriValidator { for (int i = 0; i < board.getSize(); i++) { for (int j = 0; j < board.getSize(); j++) { - if (board.getCell(i,j).getState() == HitoriCell.CellState.BLACK && + HitoriCell cell = board.getCell(i, j); + if (cell.getState() == HitoriCell.CellState.BLACK && !solutionCoordinates.contains((i + 1) + "," + (j + 1))) { - return false; + return false; // Ein schwarzes Feld gehört nicht zur Lösung + } + + // Überprüfe, ob alle nicht schwarzen Felder weiß sind + if (cell.getState() != HitoriCell.CellState.BLACK && cell.getState() != HitoriCell.CellState.WHITE) { + return false; // Es gibt noch graue Felder } } } diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/GameBoard.java b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/GameBoard.java index ae83aa3..6f395c7 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/GameBoard.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/GameBoard.java @@ -154,13 +154,7 @@ public class GameBoard extends JPanel { public boolean validateCurrentBoard() { HitoriValidator validator = new HitoriValidator(board); - if (validator.validateBoard(board.getSolutionCoordinates())) { - JOptionPane.showMessageDialog(this, "Das Spielfeld ist korrekt gelöst!", "Erfolg", JOptionPane.INFORMATION_MESSAGE); - return true; - } else { - JOptionPane.showMessageDialog(this, "Das Spielfeld enthält Fehler!", "Fehler", JOptionPane.ERROR_MESSAGE); - return false; - } + return validator.validateBoard(board.getSolutionCoordinates()); } private void showPauseMenu() { diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java index c0ae5c2..1f13738 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java @@ -111,8 +111,9 @@ public class StartMenu extends JPanel { new HighscoreDialog((JFrame) SwingUtilities.getWindowAncestor(this)).setVisible(true); } - // Hilfsmethoden + + // Hilfsmethoden private void loadGameBoard(GameBoard gameBoard, List solutionCoordinates) { removeAll(); setLayout(new BorderLayout()); @@ -140,9 +141,4 @@ public class StartMenu extends JPanel { JOptionPane.showMessageDialog(this, "Fehler beim Laden des Spielfelds: " + e.getMessage(), "Fehler", JOptionPane.ERROR_MESSAGE); } } - - - - - }