From 0ce03f7c718732d0cde61d92ae480929a6240a6e Mon Sep 17 00:00:00 2001 From: Matias Mas Viehl <3020772@stud.hs-mannheim.de> Date: Mon, 9 Jun 2025 20:07:42 +0200 Subject: [PATCH 1/4] =?UTF-8?q?quellen=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- quellen | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 quellen diff --git a/quellen b/quellen new file mode 100644 index 0000000..246b419 --- /dev/null +++ b/quellen @@ -0,0 +1,2 @@ +JFileChoser in UI: (mit GPT) +Prompt: "Wie kann ich in swing in java Files aus einem Explorer auswählen?". \ No newline at end of file From 3ab12063368d2a81d4f07ab71f2f0a16c30d7573 Mon Sep 17 00:00:00 2001 From: <3020511@stud.hs-mannheim.de> Date: Tue, 10 Jun 2025 15:13:56 +0200 Subject: [PATCH 2/4] =?UTF-8?q?Erste=20Version=20der=20Schachuhr=20mit=20m?= =?UTF-8?q?ain-Methode=20zum=20Ausf=C3=BChren?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/de/mannheim/th/chess/utl/Clock.java | 119 +++++++++++++++++- 1 file changed, 117 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/mannheim/th/chess/utl/Clock.java b/src/main/java/de/mannheim/th/chess/utl/Clock.java index 88f7e52..3fdd556 100644 --- a/src/main/java/de/mannheim/th/chess/utl/Clock.java +++ b/src/main/java/de/mannheim/th/chess/utl/Clock.java @@ -3,10 +3,125 @@ package de.mannheim.th.chess.utl; /** * Zeigt die Zeitangabe während eines Spiels eines Spielers an. */ -public class Clock{ +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Container; +import java.awt.Font; +import java.util.concurrent.atomic.AtomicInteger; + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JTextArea; +import javax.swing.Timer; + +public class Clock extends Thread implements Runnable { + private volatile boolean whiteToMove = true; + private volatile boolean gameHasFinished = false; + private int minutes; - public Clock() { + public Clock(String mode) { + setMode(mode); } + public void pressClock() { + whiteToMove = !whiteToMove; + } + + public void endGame() { + gameHasFinished = true; + } + + public void run() { + JFrame clockFrame = new JFrame("Clock"); + Container pane = clockFrame.getContentPane(); + pane.setBackground(Color.BLACK); + clockFrame.setBounds(1000, 500, 10000, 10000); + clockFrame.setBackground(Color.BLACK); + clockFrame.setLayout(new BorderLayout()); + var clock1 = new JLabel(minutes + ":00"); + clock1.setForeground(Color.WHITE); + clock1.setFont(new Font("Arial", Font.BOLD, 50)); + var clock2 = new JLabel(minutes + ":00"); + clock2.setFont(new Font("Arial", Font.BOLD, 50)); + clock2.setForeground(Color.WHITE); + var middleSpace = new JTextArea(" "); + middleSpace.setBackground(Color.BLACK); + middleSpace.setEditable(false); + pane.add(middleSpace, BorderLayout.CENTER); + + var min1 = new AtomicInteger(minutes); + var sec1 = new AtomicInteger(0); + var min2 = new AtomicInteger(minutes); + var sec2 = new AtomicInteger(0); + pane.add(clock1, BorderLayout.LINE_START); + pane.add(middleSpace, BorderLayout.CENTER); + pane.add(clock2, BorderLayout.LINE_END); + clockFrame.pack(); + clockFrame.setVisible(true); + + var t = new Timer(1000, (ae) -> { + + if (!gameHasFinished) { + + StringBuilder clockShower = new StringBuilder(); + if (whiteToMove) { + if (sec1.intValue() == 00) { + sec1.set(60); + min1.decrementAndGet(); + } + if (min1.intValue() < 10) { + clockShower.append("0"); + } + clockShower.append(min1.get()); + clockShower.append(":"); + if (sec1.intValue() < 10) { + clockShower.append("0"); + } + clockShower.append(sec1.decrementAndGet()); + clock1.setText(clockShower.toString()); + + } else { + if (sec2.intValue() == 00) { + sec2.set(60); + min2.decrementAndGet(); + } + if (min2.intValue() < 10) { + clockShower.append("0"); + } + clockShower.append(min2.get()); + clockShower.append(":"); + if (sec2.intValue() < 10) { + clockShower.append("0"); + } + clockShower.append(sec2.decrementAndGet()); + clock2.setText(clockShower.toString()); + } + clockFrame.repaint(); + if ((sec1.intValue() == 0 && min1.intValue() == 0) || (sec2.intValue() == 0 && min2.intValue() == 0)) { + endGame(); + } + } }); + + t.start(); + } + public static void main(String[] args) throws InterruptedException { + Clock st = new Clock("blitz"); + st.start(); + } + + private void setMode(String mode) { + switch(mode) { + case "blitz": + minutes = 5; + break; + case "rapid": + minutes = 10; + break; + case "classic": + minutes = 120; + break; + } + } + } \ No newline at end of file From 907772d80cb0f46b187f2165c683dd83af9cb5a1 Mon Sep 17 00:00:00 2001 From: <3020511@stud.hs-mannheim.de> Date: Tue, 10 Jun 2025 16:29:06 +0200 Subject: [PATCH 3/4] =?UTF-8?q?Kleine=20=C3=84nderungen=20an=20der=20Schac?= =?UTF-8?q?huhr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/de/mannheim/th/chess/utl/Clock.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/main/java/de/mannheim/th/chess/utl/Clock.java b/src/main/java/de/mannheim/th/chess/utl/Clock.java index 3fdd556..7c90dab 100644 --- a/src/main/java/de/mannheim/th/chess/utl/Clock.java +++ b/src/main/java/de/mannheim/th/chess/utl/Clock.java @@ -11,6 +11,8 @@ import java.util.concurrent.atomic.AtomicInteger; import javax.swing.JFrame; import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JSplitPane; import javax.swing.JTextArea; import javax.swing.Timer; @@ -34,29 +36,29 @@ public class Clock extends Thread implements Runnable { public void run() { JFrame clockFrame = new JFrame("Clock"); - Container pane = clockFrame.getContentPane(); - pane.setBackground(Color.BLACK); + + JPanel player1Panel = new JPanel(); + player1Panel.setBackground(Color.BLACK); + JPanel player2Panel = new JPanel(); + player2Panel.setBackground(Color.BLACK); clockFrame.setBounds(1000, 500, 10000, 10000); - clockFrame.setBackground(Color.BLACK); clockFrame.setLayout(new BorderLayout()); - var clock1 = new JLabel(minutes + ":00"); + JLabel clock1 = new JLabel(" " + minutes + ":00 "); clock1.setForeground(Color.WHITE); clock1.setFont(new Font("Arial", Font.BOLD, 50)); - var clock2 = new JLabel(minutes + ":00"); - clock2.setFont(new Font("Arial", Font.BOLD, 50)); + JLabel clock2 = new JLabel(" " + minutes + ":00 "); clock2.setForeground(Color.WHITE); - var middleSpace = new JTextArea(" "); - middleSpace.setBackground(Color.BLACK); - middleSpace.setEditable(false); - pane.add(middleSpace, BorderLayout.CENTER); + clock2.setFont(new Font("Arial", Font.BOLD, 50)); + player1Panel.add(clock1); + player2Panel.add(clock2); + JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT, player1Panel, player2Panel); + split.setFont(new Font("Arial", Font.BOLD, 50)); + clockFrame.add(split); var min1 = new AtomicInteger(minutes); var sec1 = new AtomicInteger(0); var min2 = new AtomicInteger(minutes); var sec2 = new AtomicInteger(0); - pane.add(clock1, BorderLayout.LINE_START); - pane.add(middleSpace, BorderLayout.CENTER); - pane.add(clock2, BorderLayout.LINE_END); clockFrame.pack(); clockFrame.setVisible(true); From e9a02e161ad1f9c90ee1035a8ba1438c266bd7f5 Mon Sep 17 00:00:00 2001 From: <3020511@stud.hs-mannheim.de> Date: Tue, 10 Jun 2025 16:41:21 +0200 Subject: [PATCH 4/4] =?UTF-8?q?Erste=20Log-Ausgaben=20f=C3=BCr=20Clock=20h?= =?UTF-8?q?inzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/de/mannheim/th/chess/utl/Clock.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/mannheim/th/chess/utl/Clock.java b/src/main/java/de/mannheim/th/chess/utl/Clock.java index 7c90dab..fa09d17 100644 --- a/src/main/java/de/mannheim/th/chess/utl/Clock.java +++ b/src/main/java/de/mannheim/th/chess/utl/Clock.java @@ -5,7 +5,6 @@ package de.mannheim.th.chess.utl; */ import java.awt.BorderLayout; import java.awt.Color; -import java.awt.Container; import java.awt.Font; import java.util.concurrent.atomic.AtomicInteger; @@ -13,12 +12,15 @@ import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSplitPane; -import javax.swing.JTextArea; import javax.swing.Timer; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + public class Clock extends Thread implements Runnable { private volatile boolean whiteToMove = true; private volatile boolean gameHasFinished = false; + private static final Logger clockLogger = LogManager.getLogger(Clock.class); private int minutes; public Clock(String mode) { @@ -28,6 +30,11 @@ public class Clock extends Thread implements Runnable { public void pressClock() { whiteToMove = !whiteToMove; + if (whiteToMove) { + clockLogger.info("Weiß ist am Zug"); + } else { + clockLogger.info("Schwarz ist am Zug"); + } } public void endGame() { @@ -108,20 +115,24 @@ public class Clock extends Thread implements Runnable { t.start(); } public static void main(String[] args) throws InterruptedException { - Clock st = new Clock("blitz"); + Clock st = new Clock("classic"); st.start(); + st.pressClock(); } private void setMode(String mode) { switch(mode) { case "blitz": minutes = 5; + clockLogger.info("Neue Blitz-Uhr wurde erstellt"); break; case "rapid": minutes = 10; + clockLogger.info("Neue Schnellschach-Uhr wurde erstellt"); break; case "classic": minutes = 120; + clockLogger.info("Neue klassische Schachuhr wurde erstellt"); break; } }