diff --git a/src/BoardDisplay.java b/src/BoardDisplay.java index 40c2238..360184d 100644 --- a/src/BoardDisplay.java +++ b/src/BoardDisplay.java @@ -1,15 +1,54 @@ import javax.swing.*; import java.awt.*; -// Erstellt Spielfeld für Spieler1/Spieler2 +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + public class BoardDisplay extends JPanel { public BoardDisplay(int gridSize, Icon buttonIcon) { - super(new GridLayout(gridSize, gridSize)); + super(new GridLayout(gridSize + 1, gridSize + 1)); // +1 wegen extra Zeile/Splate - // Buttons zum Panel hinzufügen - for (int i = 0; i < gridSize; i++) { - for (int j = 0; j < gridSize; j++) { - add(new JButton(buttonIcon)); + // Erstellung von Spielfeld + for (int i = 0; i <= gridSize; i++) { + for (int j = 0; j <= gridSize; j++) { + if (i == 0 && j == 0) { + add(new JLabel(" ")); + } else if (i == 0) { + JLabel colLabel = new JLabel(String.valueOf(j)); + colLabel.setHorizontalAlignment(SwingConstants.CENTER); + colLabel.setFont(new Font("Arial", Font.BOLD, 14)); + add(colLabel); + } else if (j == 0) { + JLabel rowLabel = new JLabel(String.valueOf((char) ('A' + i - 1))); + rowLabel.setHorizontalAlignment(SwingConstants.CENTER); + rowLabel.setFont(new Font("Arial", Font.BOLD, 14)); + add(rowLabel); + } else { + // Spielfeld (interaktive Zellen) + JButton field = new JButton(""); + field.setBackground(Color.LIGHT_GRAY); + field.setOpaque(true); + field.setBorderPainted(true); + + field.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if(SwingUtilities.isRightMouseButton(e)) { + handleFieldClick(field); + } + } + + @Override + public void mouseExited(MouseEvent e) { + // field.setBackground(Color.LIGHT_GRAY); + } + }); + add(field); + } } } } -} + + private void handleFieldClick(JButton field) { + field.setBackground(Color.RED); + } +} \ No newline at end of file diff --git a/src/GameBoard.java b/src/GameBoard.java index 38d8cf6..32d43c3 100644 --- a/src/GameBoard.java +++ b/src/GameBoard.java @@ -1,3 +1,5 @@ +import javafx.scene.control.ToggleGroup; + import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; @@ -19,22 +21,22 @@ public class GameBoard extends JPanel { JButton backButton = new JButton(backButtonIcon); // Eigene ModulButtons - JButton leftPlayerModul1 = new JButton("Modul 1"); //TODO: Dynamische Namen durch abgleich mit Semester - JButton leftPlayerModul2 = new JButton("Modul 2"); - JButton leftPlayerModul3 = new JButton("Modul 3"); - JButton leftPlayerModul4 = new JButton("Modul 4"); - JButton leftPlayerModul5 = new JButton("Modul 5"); - JButton leftPlayerModul6 = new JButton("Modul 6"); - JButton leftPlayerModul7 = new JButton("Reset"); + JToggleButton leftPlayerModul1 = new JToggleButton("Modul 1"); //TODO: Dynamische Namen durch abgleich mit Semester + JToggleButton leftPlayerModul2 = new JToggleButton("Modul 2"); + JToggleButton leftPlayerModul3 = new JToggleButton("Modul 3"); + JToggleButton leftPlayerModul4 = new JToggleButton("Modul 4"); + JToggleButton leftPlayerModul5 = new JToggleButton("Modul 5"); + JToggleButton leftPlayerModul6 = new JToggleButton("Modul 6"); + JToggleButton leftPlayerModul7 = new JToggleButton("Reset"); // Gegnerische ModulButtons - JButton rightPlayerModul1 = new JButton("Modul 1"); - JButton rightPlayerModul2 = new JButton("Modul 2"); - JButton rightPlayerModul3 = new JButton("Modul 3"); - JButton rightPlayerModul4 = new JButton("Modul 4"); - JButton rightPlayerModul5 = new JButton("Modul 5"); - JButton rightPlayerModul6 = new JButton("Modul 6"); - JButton rightPlayerModul7 = new JButton("Bereit"); + JToggleButton rightPlayerModul1 = new JToggleButton("Modul 1"); + JToggleButton rightPlayerModul2 = new JToggleButton("Modul 2"); + JToggleButton rightPlayerModul3 = new JToggleButton("Modul 3"); + JToggleButton rightPlayerModul4 = new JToggleButton("Modul 4"); + JToggleButton rightPlayerModul5 = new JToggleButton("Modul 5"); + JToggleButton rightPlayerModul6 = new JToggleButton("Modul 6"); + JToggleButton rightPlayerModul7 = new JToggleButton("Bereit"); public void buildPanel(MainFrame frame, int semesterCounter) { // Hauptlayout - BorderLayout für die Anordnung der Komponenten @@ -76,21 +78,24 @@ public class GameBoard extends JPanel { JPanel ownBoardPanel = new BoardDisplay(gridSize, gameBoardEmtpy); JPanel opponentBoardPanel = new BoardDisplay(gridSize, gameBoardEmtpy); - /* Alter code ohne BoardDisplay - // Buttons für das eigene Spielfeld hinzufügen - for (int i = 0; i < gridSize; i++) { - for (int j = 0; j < gridSize; j++) { - ownBoardPanel.add(new JButton(gameBoardEmtpy)); - } - } + //Buttons in eine Gruppe packen damit diese beim drücken eines anderen Buttons wieder entwählt werden + ButtonGroup leftButtonGroup= new ButtonGroup(); + leftButtonGroup.add(rightPlayerModul1); + leftButtonGroup.add(rightPlayerModul2); + leftButtonGroup.add(rightPlayerModul3); + leftButtonGroup.add(rightPlayerModul4); + leftButtonGroup.add(rightPlayerModul5); + leftButtonGroup.add(rightPlayerModul6); + leftButtonGroup.add(rightPlayerModul7); - // Buttons für das gegnerische Spielfeld hinzufügen - for (int i = 0; i < gridSize; i++) { - for (int j = 0; j < gridSize; j++) { - opponentBoardPanel.add(new JButton(gameBoardEmtpy)); - } - } - */ + ButtonGroup rightButtonGroup= new ButtonGroup(); + rightButtonGroup.add(leftPlayerModul1); + rightButtonGroup.add(leftPlayerModul2); + rightButtonGroup.add(leftPlayerModul3); + rightButtonGroup.add(leftPlayerModul4); + rightButtonGroup.add(leftPlayerModul5); + rightButtonGroup.add(leftPlayerModul6); + rightButtonGroup.add(leftPlayerModul7); // Panel für beide Spielfelder (nebeneinander in der Mitte) JPanel centerPanel = new JPanel(); diff --git a/src/startLocalGame.java b/src/startLocalGame.java index 9b263de..27b5b70 100644 --- a/src/startLocalGame.java +++ b/src/startLocalGame.java @@ -8,8 +8,8 @@ import java.awt.event.ActionListener; public class startLocalGame extends JPanel { // Player - //Player p1; - //Player p2; + Player p1; + Player p2; // Funktionshilfen int semesterCounter = 1; // Semester Counter Label @@ -40,6 +40,7 @@ public class startLocalGame extends JPanel { JButton rightPlayerLeftButton = new JButton("<-"); JButton rightPlayerRightButton = new JButton("->"); JButton startButton = new JButton("Start!"); + JButton testButton = new JButton("Test"); JTextField leftPlayerTextField = new JTextField(20); JTextField rightPlayerTextField = new JTextField(20); @@ -71,6 +72,9 @@ public class startLocalGame extends JPanel { semesterCounterLabel.setHorizontalAlignment(SwingConstants.CENTER); add(semesterCounterLabel); + testButton.setBounds(500,800,50,50); + add(testButton); + backButton.setBounds(1380, 20, 80, 80); add(backButton); @@ -150,9 +154,8 @@ public class startLocalGame extends JPanel { updateTextFields(); } }); - backButton.addActionListener(e -> frame.showPanel("MainMenu")); - + testButton.addActionListener(e -> frame.showPanelSLG("GameBoard",1,p1,p2)); //startButton.addActionListener(e -> frame.showPanelSLG("GameBoard", semesterCounter,p1, p2)); // TODO ECHTE FUNKTION EINFÜGEN startButton.addActionListener(new ActionListener() { @Override