Anpassung der Spielfeldernamen (Endung .csv entfernt)

Improvements_Ioana
Simona-Ioana Purdila 2025-01-06 21:26:59 +01:00
parent ffbd2dab10
commit 8da0e90a5c
4 changed files with 50 additions and 17 deletions

View File

@ -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

View File

@ -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<String, String> 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<String> 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<HighscoreManager.Highscore> highscores = highscoreManager.getHighscoresForBoard(boardName);

View File

@ -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<String> boardFileNames = BoardLoader.loadBoardsAsList();
System.out.println("Verfügbare Spielfelder: " + boardFileNames);
@ -69,7 +72,15 @@ public class StartMenu extends JPanel {
return;
}
JComboBox<String> boardSelector = new JComboBox<>(boardFileNames.toArray(new String[0]));
// Map für angezeigte Namen und tatsächliche Dateinamen
Map<String, String> 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<String> 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<String> 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<String> 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);

View File

@ -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.
*/