GameBoard Klasse erstellt

currentStatus
Vickvick2002 2025-01-03 13:45:27 +01:00
parent 12d66335f6
commit c626927a39
1 changed files with 65 additions and 0 deletions

View File

@ -0,0 +1,65 @@
package PR2.HitoriSpiel.GUI;
import PR2.HitoriSpiel.Domain.HitoriBoard;
import PR2.HitoriSpiel.Domain.HitoriCell;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class GameBoard extends JPanel {
private final HitoriBoard board; // Verbindung zur Logik
public GameBoard(HitoriBoard board) {
this.board = board;
setLayout(new GridLayout(board.getSize(), board.getSize()));
// Buttons für jede Zelle erstellen
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);
add(button);
}
}
}
private JButton createCellButton(HitoriCell cell, int row, int col) {
JButton button = new JButton(String.valueOf(cell.getNumber()));
updateButtonState(button, cell);
// ActionListener für Benutzereinganen
button.addActionListener((ActionEvent e) -> {
toggleCellState(cell);
updateButtonState(button, cell);
});
return button;
}
private void toggleCellState(HitoriCell cell) {
if (cell.getState() == HitoriCell.CellState.GRAY) {
cell.setState(HitoriCell.CellState.BLACK);
} else if (cell.getState() == HitoriCell.CellState.BLACK) {
cell.setState(HitoriCell.CellState.WHITE);
} else {
cell.setState(HitoriCell.CellState.GRAY);
}
}
private void updateButtonState(JButton button, HitoriCell cell) {
switch (cell.getState()) {
case GRAY:
button.setBackground(Color.LIGHT_GRAY);
break;
case BLACK:
button.setBackground(Color.BLACK);
button.setForeground(Color.WHITE);
break;
case WHITE:
button.setBackground(Color.WHITE);
button.setForeground(Color.BLACK);
break;
}
}
}