diff --git a/Hitori/src/main/highscores/highscores.txt b/Hitori/src/main/highscores/highscores.txt index 424b427..98d5c4c 100644 --- a/Hitori/src/main/highscores/highscores.txt +++ b/Hitori/src/main/highscores/highscores.txt @@ -5,3 +5,4 @@ Test3,100,Hitori8x8_medium.csv,0 Test4,200,Hitori15x15_medium.csv,10 IOANA VERSUCH 156,105,Hitori5x5_leicht.csv,0 IOANA VERSUCH 439,44,Hitori5x5_leicht.csv,0 +Yovu,46,Hitori4x4_leicht.csv,0 diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/HighscoreDialog.java b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/HighscoreDialog.java index 1cb2120..f498ba2 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/HighscoreDialog.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/HighscoreDialog.java @@ -6,6 +6,8 @@ import javax.swing.table.DefaultTableModel; import javax.swing.*; import java.awt.*; +import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -32,10 +34,23 @@ public class HighscoreDialog extends JDialog { Setup.styleLabel(titleLabel); // Schriftstil setzen add(titleLabel, BorderLayout.NORTH); + // Map für angezeigte Namen und tatsächliche Dateinamen + Map displayToFileNameMap = new LinkedHashMap<>(); + for (String fileName : boardNames) { + String displayName = fileName.endsWith(".csv") ? fileName.substring(0, fileName.lastIndexOf(".csv")) : fileName; + displayToFileNameMap.put(displayName, fileName); + } - // Spielfeld-Auswahl (ComboBox) - boardSelector = new JComboBox<>(boardNames.toArray(new String[0])); - boardSelector.addActionListener(e -> loadHighscoresForBoard((String) boardSelector.getSelectedItem())); + // Spielfeld-Auswahl (ComboBox) mit angezeigten Namen + List displayBoardNames = new ArrayList<>(displayToFileNameMap.keySet()); + boardSelector = new JComboBox<>(displayBoardNames.toArray(new String[0])); + boardSelector.addActionListener(e -> { + String selectedDisplayName = (String) boardSelector.getSelectedItem(); + if (selectedDisplayName != null) { + String actualFileName = displayToFileNameMap.get(selectedDisplayName); + loadHighscoresForBoard(actualFileName); + } + }); add(boardSelector, BorderLayout.NORTH); // Tabelle für Highscores @@ -53,9 +68,14 @@ public class HighscoreDialog extends JDialog { Setup.stylePanel(buttonPanel); // Hintergrundstil setzen add(buttonPanel, BorderLayout.SOUTH); - loadHighscoresForBoard(boardNames.get(0)); + // Lade Highscores für das erste Spielfeld + if (!boardNames.isEmpty()) { + String firstFileName = displayToFileNameMap.get(displayBoardNames.get(0)); + loadHighscoresForBoard(firstFileName); + } } + private void loadHighscoresForBoard(String boardName) { tableModel.setRowCount(0); // Tabelle zurücksetzen List highscores = highscoreManager.getHighscoresForBoard(boardName); diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java index 81322b3..d84c79f 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java @@ -7,7 +7,9 @@ import PR2.HitoriSpiel.Fassade.Setup; import javax.swing.*; import java.awt.*; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import java.util.Random; import static PR2.HitoriSpiel.GUI.BoardLoader.loadBoard; @@ -54,13 +56,14 @@ public class StartMenu extends JPanel { } - private void continueGame() { + public void continueGame() { // TODO: Logik zum Fortsetzen des Spiels implementieren JOptionPane.showMessageDialog(this, "Spiel fortsetzen wurde angeklickt"); } - protected void selectBoard() { + public void selectBoard() { + // Lade die Liste der Dateinamen List boardFileNames = BoardLoader.loadBoardsAsList(); System.out.println("Verfügbare Spielfelder: " + boardFileNames); @@ -69,7 +72,15 @@ public class StartMenu extends JPanel { return; } - JComboBox boardSelector = new JComboBox<>(boardFileNames.toArray(new String[0])); + // Map für angezeigte Namen und tatsächliche Dateinamen + Map displayToFileNameMap = new LinkedHashMap<>(); + for (String fileName : boardFileNames) { + String displayName = fileName.endsWith(".csv") ? fileName.substring(0, fileName.lastIndexOf(".csv")) : fileName; + displayToFileNameMap.put(displayName, fileName); + } + + // JComboBox mit den angezeigten Namen füllen + JComboBox boardSelector = new JComboBox<>(displayToFileNameMap.keySet().toArray(new String[0])); boardSelector.setPreferredSize(new Dimension(250, 30)); JPanel selectionPanel = new JPanel(new BorderLayout()); @@ -85,17 +96,21 @@ public class StartMenu extends JPanel { ); if (option == JOptionPane.OK_OPTION) { - String selectedFile = (String) boardSelector.getSelectedItem(); - System.out.println("Ausgewählte Datei: " + selectedFile); - if (selectedFile != null) { + String selectedDisplayName = (String) boardSelector.getSelectedItem(); + System.out.println("Ausgewähltes Spielfeld (Angezeigter Name): " + selectedDisplayName); + if (selectedDisplayName != null) { + // Hole den tatsächlichen Dateinamen + String selectedFileName = displayToFileNameMap.get(selectedDisplayName); + System.out.println("Ausgewählte Datei (mit .csv): " + selectedFileName); + // Lade das ausgewählte Spielfeld - System.out.println("Ich bin drin."); - loadAndDisplayBoard(selectedFile); + loadAndDisplayBoard(selectedFileName); } } } - protected void randomBoard() { + + public void randomBoard() { List boardFileNames = BoardLoader.loadBoardsAsList(); if (boardFileNames == null || boardFileNames.isEmpty()) { JOptionPane.showMessageDialog(this, "Keine Spielfelder gefunden.", "Fehler", JOptionPane.ERROR_MESSAGE); @@ -107,7 +122,7 @@ public class StartMenu extends JPanel { } - private void highscorelist() { + public void highscorelist() { List boardNames = BoardLoader.loadBoardsAsList(); // Lade die Spielfeldnamen if (boardNames == null || boardNames.isEmpty()) { JOptionPane.showMessageDialog(this, "Keine Highscores verfügbar, da keine Spielfelder gefunden wurden.", "Info", JOptionPane.INFORMATION_MESSAGE); diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/Main/Main.java b/Hitori/src/main/java/PR2/HitoriSpiel/Main/Main.java index 59c8622..5469b63 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/Main/Main.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/Main/Main.java @@ -2,11 +2,8 @@ package PR2.HitoriSpiel.Main; import PR2.HitoriSpiel.GUI.StartMenu; import PR2.HitoriSpiel.Fassade.StateManager; - import javax.swing.*; - - /** * Einstiegspunkt des Hitori-Spiels. Initialisiert die GUI und startet das Programm. */