From aaa4317c9cfb8a4ab89494aae3ee3d8d20a228ae Mon Sep 17 00:00:00 2001 From: Justin Date: Mon, 23 Jun 2025 23:44:15 +0200 Subject: [PATCH] Added resign and draw feature --- .../chess/controller/GameController.java | 39 +++++++++++++++++++ .../informatik/chess/view/GameGui.java | 9 +++-- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/schach/src/main/java/de/hs_mannheim/informatik/chess/controller/GameController.java b/schach/src/main/java/de/hs_mannheim/informatik/chess/controller/GameController.java index f3b0f7b..b20b1ed 100644 --- a/schach/src/main/java/de/hs_mannheim/informatik/chess/controller/GameController.java +++ b/schach/src/main/java/de/hs_mannheim/informatik/chess/controller/GameController.java @@ -122,6 +122,45 @@ public class GameController { // 3. Board neu zeichnen updateGuiBoard(); }); + + // --- AUFGEBEN-BUTTON --- + gui.getResignButton().addActionListener(e -> { + if (gameOver) return; // Nichts tun wenn Spiel vorbei + + int answer = javax.swing.JOptionPane.showConfirmDialog( + null, + "Willst du wirklich aufgeben?", + "Aufgeben", + javax.swing.JOptionPane.YES_NO_OPTION + ); + if (answer == javax.swing.JOptionPane.YES_OPTION) { + gameOver = true; + String winner = engine.getCurrentPlayer().equals("WHITE") ? "SCHWARZ" : "WEIß"; + gui.displayMessage(winner + " gewinnt durch Aufgabe!"); + engine.getWhiteTimer().stop(); + engine.getBlackTimer().stop(); + askForRestart(); + } + }); + + // --- PATT-/REMIS-BUTTON --- + gui.getDrawButton().addActionListener(e -> { + if (gameOver) return; + + int answer = javax.swing.JOptionPane.showConfirmDialog( + null, + "Remis anbieten? (Das Spiel endet sofort unentschieden)", + "Remis", + javax.swing.JOptionPane.YES_NO_OPTION + ); + if (answer == javax.swing.JOptionPane.YES_OPTION) { + gameOver = true; + gui.displayMessage("Remis! (durch Einigung)"); + engine.getWhiteTimer().stop(); + engine.getBlackTimer().stop(); + askForRestart(); + } + }); } diff --git a/schach/src/main/java/de/hs_mannheim/informatik/chess/view/GameGui.java b/schach/src/main/java/de/hs_mannheim/informatik/chess/view/GameGui.java index 9eecee0..c915414 100644 --- a/schach/src/main/java/de/hs_mannheim/informatik/chess/view/GameGui.java +++ b/schach/src/main/java/de/hs_mannheim/informatik/chess/view/GameGui.java @@ -43,6 +43,7 @@ public class GameGui { private JButton resignButton; private JButton drawButton; + private JButton quickSaveButton; Color LIGHT = new Color(0xe0e1dd); Color DARK = new Color(0x778da9); @@ -173,16 +174,16 @@ public class GameGui { buttonRow.setOpaque(false); buttonRow.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT, 10, 0)); - resignButton = new JButton("🛑"); + resignButton = new JButton("🏳"); resignButton.setPreferredSize(new Dimension(70, 70)); - resignButton.setFont(new Font("SansSerif", Font.BOLD, 40)); + resignButton.setFont(new Font("SansSerif", Font.BOLD, 35)); resignButton.setBackground(new Color(0xff0044)); resignButton.setForeground(Color.WHITE); resignButton.setFocusPainted(false); - drawButton = new JButton("½–½"); + drawButton = new JButton("½"); drawButton.setPreferredSize(new Dimension(70, 70)); - drawButton.setFont(new Font("SansSerif", Font.BOLD, 40)); + drawButton.setFont(new Font("SansSerif", Font.BOLD, 35)); drawButton.setBackground(new Color(0x0080ff)); drawButton.setForeground(Color.WHITE); drawButton.setFocusPainted(false);