From b4d3ee05d6985de9aecf95dce6cb4aae7d94c24c Mon Sep 17 00:00:00 2001 From: 3010293 <3010293@stud.hs-mannheim.de> Date: Sat, 4 Jan 2025 13:00:22 +0100 Subject: [PATCH] added durchschnittszeit angabe --- .../informatik/mvn/domain/HitoriMain2.java | 36 +++++++++++++++++++ .../informatik/mvn/gui/HighscoreGUI.java | 2 ++ 2 files changed, 38 insertions(+) diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HitoriMain2.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HitoriMain2.java index 31e955d..d602538 100644 --- a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HitoriMain2.java +++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/domain/HitoriMain2.java @@ -16,12 +16,16 @@ import java.io.OutputStreamWriter; import java.nio.charset.StandardCharsets; import java.time.DateTimeException; import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoField; import java.util.ArrayList; import java.util.Comparator; import java.util.Stack; import javax.swing.JButton; import javax.swing.JFrame; +import javax.swing.JLabel; import javax.swing.JPanel; +import java.time.format.DateTimeFormatterBuilder; import de.hs_mannheim.informatik.mvn.gui.*; public class HitoriMain2 extends JFrame implements ActionListener{ @@ -260,6 +264,38 @@ public class HitoriMain2 extends JFrame implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { } + + public static JLabel getAvgTime(byte[] data, String filename) throws IOException { + String text = "Durchschnittszeit: "; + int totalSeconds = 0; + int count = 0; + try (BufferedReader reader = new BufferedReader( + new InputStreamReader(new ByteArrayInputStream(data), StandardCharsets.UTF_8))) { + String line; + DateTimeFormatter dtf = new DateTimeFormatterBuilder() + .appendPattern("mm:ss") // we only have minutes and seconds + .parseDefaulting(ChronoField.HOUR_OF_DAY, 0) // default hour = 0 + .toFormatter(); + while ((line = reader.readLine()) != null) { + line = line.trim(); + if (line.isEmpty()) continue; + String[] parts = line.split("\\s+", 2); + String timePart = parts[0]; + LocalTime localTime = LocalTime.parse(timePart, dtf); + int minutes = localTime.getMinute(); + int seconds = localTime.getSecond(); + int totalSecThisLine = minutes * 60 + seconds; + totalSeconds += totalSecThisLine; + count++; + } + int timeInt = totalSeconds/count; + int minutes = timeInt/60; + int seconds = timeInt%60; + String time= minutes+":"+seconds; + JLabel avgTime = new JLabel(text + time); + return avgTime; + } + } } class HighscoreEintrag { diff --git a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/HighscoreGUI.java b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/HighscoreGUI.java index 0b4ed0e..7c045ed 100644 --- a/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/HighscoreGUI.java +++ b/PR2Projekt/src/main/java/de/hs_mannheim/informatik/mvn/gui/HighscoreGUI.java @@ -138,6 +138,8 @@ public class HighscoreGUI extends JFrame implements ActionListener { } } highscorePanel1.add(entryPanel, BorderLayout.CENTER); + JLabel avgTime = HitoriMain2.getAvgTime(data, filename); + highscorePanel1.add(avgTime, BorderLayout.NORTH); } else { JLabel text = new JLabel("Noch kein Highscore eingetragen."); highscorePanel1.add(text, BorderLayout.CENTER);