Highsocre manager für benutztung von Highscores eingefügt

feature/CSVReader
Leon Löhle 2025-01-01 13:17:07 +01:00
parent d1fcac31ca
commit e832fc5f6f
1 changed files with 75 additions and 0 deletions

View File

@ -0,0 +1,75 @@
package de.deversmann.domain;
import java.io.*;
import java.util.*;
public class HighscoreManager {
private final Map<String, List<HighscoreEntry>> 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<HighscoreEntry> getHighscores(String spielfeld) {
return highscoreMap.getOrDefault(spielfeld, new ArrayList<>());
}
public double getDurchschnittszeit(String spielfeld) {
List<HighscoreEntry> 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<String, List<HighscoreEntry>> loadedMap = (Map<String, List<HighscoreEntry>>) 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;
}
}
}