Compare commits

...

3 Commits

Author SHA1 Message Date
Leon Maximilian Löhle ae5fb68bd4 Musste neuen Commit machen, nachdem Datenstand nicht den gleichen Stand hatte wie main um einen Pull request in main zu gestatten 2025-01-06 19:42:02 +01:00
Leon Maximilian Löhle da6ffa8379 Merge branch 'main' into Löhle
# Conflicts:
#	src/main/java/de/deversmann/gui/GameView.java
#	src/main/java/de/deversmann/gui/HitoriApp.java
2025-01-06 19:31:31 +01:00
dustineversmann 4394a89a9c feature: Trennung des Einlesens der Dateien von der Erstellung des Spielfelds 2025-01-02 18:03:21 +01:00
6 changed files with 48 additions and 58 deletions

View File

@ -0,0 +1,39 @@
package de.deversmann.domain;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class CSVReader {
/**
* Liest die CSV-Datei ein und gibt die enthaltenen Werte als zweidimensionales int-Array zurück.
*
* @param csvFile Pfad zur CSV-Datei
* @return zweidimensionales Array, das die Zahlen aus der CSV enthält
* @throws IOException wenn ein Fehler beim Lesen auftritt
*/
public int[][] readCsvToIntArray(String csvFile) throws IOException {
ArrayList<int[]> rows = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
String line;
while ((line = br.readLine()) != null) {
String[] tokens = line.split(",");
int[] row = new int[tokens.length];
for (int i = 0; i < tokens.length; i++) {
row[i] = Integer.parseInt(tokens[i].trim());
}
rows.add(row);
}
}
// ArrayList in 2D-Array umwandeln
int[][] result = new int[rows.size()][];
for (int i = 0; i < rows.size(); i++) {
result[i] = rows.get(i);
}
return result;
}
}

View File

@ -1,6 +1,5 @@
package de.deversmann.domain;
public class Zeiterfassung {
private long startTime;

View File

@ -1,54 +1,4 @@
package de.deversmann.facade;
import java.io.IOException;
import java.util.List;
public class Facade {
private final CSVReader csvReader;
private final HighscoreManager_2_0 highscoreManager;
private final Zeiterfassung_2_0 zeiterfassung;
// Hier speichern wir das aktuell geladene Puzzle (mit Lösung)
private PuzzleData currentPuzzleData;
public Facade() {
this.csvReader = new CSVReader();
this.highscoreManager = new HighscoreManager_2_0();
this.zeiterfassung = new Zeiterfassung_2_0();
}
public void ladeSpielfeld(String csvPfad) throws IOException {
// Liest Puzzle + Lösung aus der CSV
this.currentPuzzleData = csvReader.readPuzzleWithSolution(csvPfad);
}
public int[][] getAktuellesPuzzle() {
return (currentPuzzleData != null)
? currentPuzzleData.getPuzzle()
: null;
}
public List<int[]> getLoesungsKoordinaten() {
return (currentPuzzleData != null)
? currentPuzzleData.getSolutionCoordinates()
: null;
}
public void startZeiterfassung() {
zeiterfassung.start();
}
public long stopZeiterfassung() {
zeiterfassung.stop();
return zeiterfassung.getElapsedTimeInSeconds();
}
public void addHighscore(int score) {
highscoreManager.addHighscore(score);
}
public List<Integer> getAllHighscores() {
return highscoreManager.getHighscores();
}
}
}

View File

@ -11,7 +11,7 @@ import java.util.Random;
public class GameView extends JFrame {
private final Facade facade;
private SpielfeldGUI_2_0 spielfeldGUI;
private SpielfeldGUI spielfeldGUI;
private JComboBox<String> cbSpielfelder;
private JButton btnLoad;
@ -84,7 +84,7 @@ public class GameView extends JFrame {
getContentPane().setLayout(new BorderLayout());
getContentPane().add(controlPanel, BorderLayout.NORTH);
spielfeldGUI = new SpielfeldGUI_2_0(1, 1);
spielfeldGUI = new SpielfeldGUI(1, 1);
getContentPane().add(spielfeldGUI, BorderLayout.CENTER);
}

View File

@ -2,6 +2,7 @@ package de.deversmann.gui;
import de.deversmann.facade.Facade;
public class HitoriApp {
private Facade facade;
@ -14,4 +15,4 @@ public class HitoriApp {
GameView view = new GameView(facade);
view.setVisible(true);
}
}
}

View File

@ -5,13 +5,14 @@ import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.*;
import java.util.List;
public class SpielfeldGUI_2_0 extends JPanel {
public class SpielfeldGUI extends JPanel {
private JLabel[][] grid;
private Set<String> errorCells = new HashSet<>();
public SpielfeldGUI_2_0(int rows, int cols) {
public SpielfeldGUI(int rows, int cols) {
setLayout(new GridLayout(rows, cols));
grid = new JLabel[rows][cols];
@ -132,4 +133,4 @@ public class SpielfeldGUI_2_0 extends JPanel {
if (grid == null) return false;
return (r >= 0 && r < grid.length && c >= 0 && c < grid[r].length);
}
}
}