GameBoard Code erweitert und verbessert
parent
6462424563
commit
078d653921
|
@ -64,14 +64,14 @@ public class GameBoard extends JPanel {
|
||||||
private JPanel createControlPanel() {
|
private JPanel createControlPanel() {
|
||||||
JPanel controlPanel = new JPanel();
|
JPanel controlPanel = new JPanel();
|
||||||
|
|
||||||
JButton resetButton = createButton("Zurücksetzen", 200, 30);
|
JButton resetButton = createButton("Zurücksetzen", 150, 30);
|
||||||
resetButton.addActionListener(e -> {
|
resetButton.addActionListener(e -> {
|
||||||
saveStateForUndo();
|
saveStateForUndo();
|
||||||
resetBoard();
|
resetBoard();
|
||||||
refreshBoard();
|
refreshBoard();
|
||||||
});
|
});
|
||||||
|
|
||||||
JButton undoButton = createButton("Undo", 200, 30);
|
JButton undoButton = createButton("Undo", 80, 30);
|
||||||
undoButton.addActionListener(e -> {
|
undoButton.addActionListener(e -> {
|
||||||
int[][] previousState = stateManager.undo(board.getNumbers());
|
int[][] previousState = stateManager.undo(board.getNumbers());
|
||||||
if (previousState != null) {
|
if (previousState != null) {
|
||||||
|
@ -82,7 +82,7 @@ public class GameBoard extends JPanel {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
JButton redoButton = createButton("Redo", 200, 30);
|
JButton redoButton = createButton("Redo", 80, 30);
|
||||||
redoButton.addActionListener(e -> {
|
redoButton.addActionListener(e -> {
|
||||||
int[][] nextState = stateManager.redo(board.getNumbers());
|
int[][] nextState = stateManager.redo(board.getNumbers());
|
||||||
if (nextState != null) {
|
if (nextState != null) {
|
||||||
|
@ -93,7 +93,7 @@ public class GameBoard extends JPanel {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
JButton validateButton = createButton("Validieren", 200, 30);
|
JButton validateButton = createButton("Validieren", 100, 30);
|
||||||
validateButton.addActionListener(e -> {
|
validateButton.addActionListener(e -> {
|
||||||
if (validateCurrentBoard()) {
|
if (validateCurrentBoard()) {
|
||||||
stopTimer();
|
stopTimer();
|
||||||
|
@ -103,7 +103,7 @@ public class GameBoard extends JPanel {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
JButton pauseButton = createButton("Pause", 200, 30);
|
JButton pauseButton = createButton("Pause", 100, 30);
|
||||||
pauseButton.addActionListener(e -> {
|
pauseButton.addActionListener(e -> {
|
||||||
stopTimer();
|
stopTimer();
|
||||||
showPauseMenu();
|
showPauseMenu();
|
||||||
|
@ -120,28 +120,31 @@ public class GameBoard extends JPanel {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void resetBoard() {
|
public void resetBoard() {
|
||||||
// Spielfeldlogik zurücksetzen
|
// Spiellogik zurücksetzen
|
||||||
//stopTimer();
|
|
||||||
//startTimer(); // Timer neu starten
|
|
||||||
board.resetBoard();
|
board.resetBoard();
|
||||||
removeAll();
|
|
||||||
add(timerLabel, BorderLayout.NORTH);
|
|
||||||
|
|
||||||
JPanel gamePanel = new JPanel(new GridLayout(board.getSize(), board.getSize()));
|
// Spielfeld (CENTER) entfernen und neu erstellen
|
||||||
for (int i = 0; i < board.getSize(); i++) {
|
if (getLayout() instanceof BorderLayout) {
|
||||||
for (int j = 0; j < board.getSize(); j++) {
|
BorderLayout layout = (BorderLayout) getLayout();
|
||||||
HitoriCell cell = board.getCell(i, j);
|
|
||||||
JButton button = createCellButton(cell, i, j);
|
// Komponente im CENTER entfernen
|
||||||
gamePanel.add(button);
|
Component centerComponent = layout.getLayoutComponent(BorderLayout.CENTER);
|
||||||
|
if (centerComponent != null) {
|
||||||
|
remove(centerComponent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Neues Spielfeld hinzufügen
|
||||||
|
add(createGamePanel(), BorderLayout.CENTER);
|
||||||
|
|
||||||
|
// Kontroll-Buttons (SOUTH) entfernen und neu hinzufügen
|
||||||
|
Component southComponent = layout.getLayoutComponent(BorderLayout.SOUTH);
|
||||||
|
if (southComponent != null) {
|
||||||
|
remove(southComponent);
|
||||||
|
}
|
||||||
|
add(createControlPanel(), BorderLayout.SOUTH);
|
||||||
}
|
}
|
||||||
add(gamePanel, BorderLayout.CENTER);
|
|
||||||
|
|
||||||
// Kontroll-Buttons unten behalten
|
// Oberfläche aktualisieren
|
||||||
JPanel controlPanel = createControlPanel();
|
|
||||||
add(controlPanel, BorderLayout.SOUTH);
|
|
||||||
|
|
||||||
// Oberfläche neu laden
|
|
||||||
revalidate();
|
revalidate();
|
||||||
repaint();
|
repaint();
|
||||||
}
|
}
|
||||||
|
@ -241,19 +244,8 @@ public class GameBoard extends JPanel {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refreshBoard() {
|
private void refreshBoard() {
|
||||||
removeAll();
|
remove(1); // Entferne das aktuelle Spielfeld im CENTER
|
||||||
JPanel gamePanel = new JPanel(new GridLayout(board.getSize(), board.getSize()));
|
add(createGamePanel(), BorderLayout.CENTER); // Füge das neue Spielfeld hinzu
|
||||||
for (int i = 0; i < board.getSize(); i++) {
|
|
||||||
for (int j = 0; j < board.getSize(); j++) {
|
|
||||||
HitoriCell cell = board.getCell(i, j);
|
|
||||||
JButton button = createCellButton(cell, i, j);
|
|
||||||
gamePanel.add(button);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
add(gamePanel, BorderLayout.CENTER);
|
|
||||||
|
|
||||||
JPanel controlPanel = createControlPanel();
|
|
||||||
add(controlPanel, BorderLayout.SOUTH);
|
|
||||||
|
|
||||||
revalidate();
|
revalidate();
|
||||||
repaint();
|
repaint();
|
||||||
|
@ -263,4 +255,17 @@ public class GameBoard extends JPanel {
|
||||||
stateManager.saveState(board.getNumbers());
|
stateManager.saveState(board.getNumbers());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private JPanel createGamePanel() {
|
||||||
|
JPanel gamePanel = new JPanel(new GridLayout(board.getSize(), board.getSize()));
|
||||||
|
for (int i = 0; i < board.getSize(); i++) {
|
||||||
|
for (int j = 0; j < board.getSize(); j++) {
|
||||||
|
HitoriCell cell = board.getCell(i, j);
|
||||||
|
JButton button = createCellButton(cell, i, j);
|
||||||
|
gamePanel.add(button);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("Spielpanel erstellt mit " + (board.getSize() * board.getSize()) + " Buttons.");
|
||||||
|
return gamePanel;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue