GUI ermöglicht nun Start und Zeitmessung. Noch keine Idee für korrekte Implementierung der Spielfeld auswahl

feature/CSVReader
Leon Maximilian Löhle 2024-12-27 15:02:48 +01:00
parent bb8a2ad265
commit d1fcac31ca
2 changed files with 97 additions and 4 deletions

View File

@ -1,4 +0,0 @@
package de.deversmann.gui;
public class Spielfeld {
}

View File

@ -0,0 +1,97 @@
package de.deversmann.gui;
import de.deversmann.domain.Spielfeld;
import de.deversmann.domain.Zeiterfassung;
import javax.swing.*;
import java.awt.*;
public class SpielfeldGUI {
private JFrame frame;
private JPanel spielfeldPanel;
private JLabel timerLabel;
private Timer guiTimer;
private Spielfeld spielfeld;
private Zeiterfassung timer;
public SpielfeldGUI() {
// Initialisiere Domain-Klassen
spielfeld = new Spielfeld();
timer = new Zeiterfassung();
// Erstelle das Hauptfenster
frame = new JFrame("Hitori Spielfeld");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
frame.setLayout(new BorderLayout());
// Timer-Anzeige
timerLabel = new JLabel("00:00:00.000");
timerLabel.setFont(new Font("Monospaced", Font.BOLD, 16));
frame.add(timerLabel, BorderLayout.NORTH);
// Spielfeld-Panel
spielfeldPanel = new JPanel();
frame.add(spielfeldPanel, BorderLayout.CENTER);
// Button-Panel
JPanel buttonPanel = new JPanel();
JButton selectButton = new JButton("Spielfeld auswählen");
JButton startButton = new JButton("Timer starten");
JButton stopButton = new JButton("Timer stoppen");
buttonPanel.add(selectButton);
buttonPanel.add(startButton);
buttonPanel.add(stopButton);
frame.add(buttonPanel, BorderLayout.SOUTH);
// Aktionen für Buttons
selectButton.addActionListener(e -> ladeSpielfeldMitAuswahl());
startButton.addActionListener(e -> starteTimer());
stopButton.addActionListener(e -> stoppeTimer());
// Timer für GUI-Updates
guiTimer = new Timer(100, e -> timerLabel.setText(timer.getFormattedTime()));
// Fenster sichtbar machen
frame.setVisible(true);
}
private void starteTimer() {
timer.start();
guiTimer.start();
}
private void stoppeTimer() {
timer.stop();
guiTimer.stop();
}
private void ladeSpielfeldMitAuswahl() {
}
private void zeigeSpielfeld() {
}
private void feldAktion(int x, int y, JButton button) {
String aktuellerZustand = spielfeld.getZustand(x, y);
String neuerZustand = switch (aktuellerZustand) {
case "grau" -> "schwarz";
case "schwarz" -> "weiß";
default -> "grau";
};
spielfeld.setzeZustand(x, y, neuerZustand);
button.setBackground(switch (neuerZustand) {
case "schwarz" -> Color.BLACK;
case "weiß" -> Color.WHITE;
default -> Color.GRAY;
});
}
public static void main(String[] args) {
SwingUtilities.invokeLater(SpielfeldGUI::new);
}
}