Compare commits

..

No commits in common. "b07fcb0ff5ab83efe8ef10fa1b558e4b2ce1a9c3" and "b14d044443e7ab254305c76347e47150e2d29e64" have entirely different histories.

6 changed files with 12 additions and 140 deletions

View File

@ -16,15 +16,6 @@ public class HitoriBoard {
initializeBoard(numbers);
}
public List<String> getSolutionCoordinates() {
return solutionCoordinates;
}
public HitoriCell[][] getBoard() {
return board;
}
private void initializeBoard(int[][] numbers){
for (int i = 0; i < numbers.length; i++) {
for (int j = 0; j < numbers[i].length; j++) {
@ -48,10 +39,5 @@ public class HitoriBoard {
board[i][j].setState(HitoriCell.CellState.GRAY);
}
}
}
}

View File

@ -8,31 +8,20 @@ import java.util.*;
*/
public class HitoriSolutionLoader {
public static List<String> loadSolution(String resourcePath) throws IOException {
InputStream inputStream = HitoriSolutionLoader.class.getResourceAsStream(resourcePath);
if (inputStream == null) {
throw new IOException("Ressourcendatei nicht gefunden: " + resourcePath);
}
/**
* Loads solution coordinates from a CSV file.
* @param filePath The path to the CSV file containing solution coordinates.
* @return A list of "row,column" formatted solution coordinates.
* @throws IOException If the file cannot be read.
*/
public static List<String> loadSolution(String filePath) throws IOException {
List<String> solutionCoordinates = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
boolean isSolutionSection = false;
while ((line = reader.readLine()) != null) {
// Erkenne den Abschnitt für die Lösung
if (line.startsWith("//Lösung")) {
isSolutionSection = true;
continue; // Überspringe die Kommentarzeile
}
if (isSolutionSection) {
solutionCoordinates.add(line.trim());
}
solutionCoordinates.add(line.trim());
}
}
return solutionCoordinates;
}
}

View File

@ -23,7 +23,7 @@ public class BoardLoader {
);
}*/
public static List<String> loadBoardsAsList() {
public static List<String> loadBoardsAsList() {
List<String> boardFiles = new ArrayList<>();
try {
// Lade das Verzeichnis aus dem Klassenpfad
@ -97,5 +97,4 @@ public class BoardLoader {
// Konvertiere die Liste von Zeilen in ein 2D-Array
return rows.toArray(new int[0][0]);
}
}

View File

@ -2,13 +2,11 @@ package PR2.HitoriSpiel.GUI;
import PR2.HitoriSpiel.Domain.HitoriBoard;
import PR2.HitoriSpiel.Domain.HitoriCell;
import PR2.HitoriSpiel.Domain.HitoriValidator;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class GameBoard extends JPanel {
private final HitoriBoard board; // Verbindung zur Logik
@ -40,12 +38,6 @@ public class GameBoard extends JPanel {
}
private void toggleCellState(HitoriCell cell) {
if (cell == null) {
System.err.println("Ungültige Zelle! Der Zustand kann nicht geändert werden.");
return;
}
if (cell.getState() == HitoriCell.CellState.GRAY) {
cell.setState(HitoriCell.CellState.BLACK);
} else if (cell.getState() == HitoriCell.CellState.BLACK) {
@ -70,16 +62,4 @@ public class GameBoard extends JPanel {
break;
}
}
public void resetBoard() {
board.resetBoard(); // Aufruf der Methode aus HitoriBoard
revalidate();
repaint();
}
public boolean validateCurrentBoard() {
HitoriValidator validator = new HitoriValidator(board);
return validator.validateBoard(board.getSolutionCoordinates());
}
}

View File

@ -1,11 +1,10 @@
package PR2.HitoriSpiel.GUI;
import PR2.HitoriSpiel.Domain.HitoriBoard;
import PR2.HitoriSpiel.Domain.HitoriSolutionLoader;
import javax.swing.*;
import java.awt.*;
import java.io.IOException;
import java.io.File;
import java.io.InputStream;
import java.util.List;
@ -94,20 +93,8 @@ 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<String> 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());
@ -134,14 +121,6 @@ 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();
@ -151,53 +130,4 @@ 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<String> 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();
}
}*/
}

View File

@ -4,21 +4,9 @@ import PR2.HitoriSpiel.GUI.StartMenu;
import javax.swing.*;
/**
* Einstiegspunkt des Hitori-Spiels. Initialisiert die GUI und startet das Programm.
*/
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
try {
new StartMenu();
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "Ein schwerer Fehler ist aufgetreten: " + e.getMessage(), "Fehler", JOptionPane.ERROR_MESSAGE);
}
});
SwingUtilities.invokeLater(() -> new StartMenu());
}
}