From e832fc5f6fcc0120b917bda4c702cdf8d34a1025 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20L=C3=B6hle?= <3010261@hs-mannheim.de> Date: Wed, 1 Jan 2025 13:17:07 +0100 Subject: [PATCH] =?UTF-8?q?Highsocre=20manager=20f=C3=BCr=20benutztung=20v?= =?UTF-8?q?on=20Highscores=20eingef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deversmann/domain/HighscoreManager.java | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/main/java/de/deversmann/domain/HighscoreManager.java diff --git a/src/main/java/de/deversmann/domain/HighscoreManager.java b/src/main/java/de/deversmann/domain/HighscoreManager.java new file mode 100644 index 0000000..42d67cc --- /dev/null +++ b/src/main/java/de/deversmann/domain/HighscoreManager.java @@ -0,0 +1,75 @@ +package de.deversmann.domain; + +import java.io.*; +import java.util.*; + +public class HighscoreManager { + private final Map> highscoreMap; + + public HighscoreManager() { + highscoreMap = new HashMap<>(); + } + + public void addHighscore(String spielfeld, String name, long zeit, int fehler) { + HighscoreEntry entry = new HighscoreEntry(name, zeit, fehler); + highscoreMap.computeIfAbsent(spielfeld, k -> new ArrayList<>()).add(entry); + saveHighscores(); + } + + public List getHighscores(String spielfeld) { + return highscoreMap.getOrDefault(spielfeld, new ArrayList<>()); + } + + public double getDurchschnittszeit(String spielfeld) { + List highscores = getHighscores(spielfeld); + return highscores.stream().mapToLong(HighscoreEntry::getZeit).average().orElse(0); + } + + private void saveHighscores() { + try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("highscores.dat"))) { + oos.writeObject(highscoreMap); + } catch (IOException e) { + System.err.println("Fehler beim Speichern der Highscores: " + e.getMessage()); + } + } + + @SuppressWarnings("unchecked") + public void loadHighscores() { + try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("highscores.dat"))) { + Map> loadedMap = (Map>) ois.readObject(); + highscoreMap.clear(); + highscoreMap.putAll(loadedMap); + } catch (IOException | ClassNotFoundException e) { + System.err.println("Fehler beim Laden der Highscores: " + e.getMessage()); + } + } + + public static class HighscoreEntry implements Serializable { + private final String name; + private final long zeit; + private final int fehler; + + public HighscoreEntry(String name, long zeit, int fehler) { + this.name = name; + this.zeit = zeit; + this.fehler = fehler; + } + + public String getName() { + return name; + } + + public long getZeit() { + return zeit; + } + + public int getFehler() { + return fehler; + } + + @Override + public String toString() { + return name + ": " + zeit + "ms, Fehler: " + fehler; + } + } +}