added durchschnittszeit angabe

main
Berat Kocak 2025-01-04 13:00:22 +01:00
parent 9625a02631
commit b4d3ee05d6
2 changed files with 38 additions and 0 deletions

View File

@ -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 {

View File

@ -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);