spiel endet nicht wenn zwei leute maximale punktzahl haben

pull/46/head
eric 2025-08-12 02:42:56 +02:00
parent 5f176bab0f
commit b3eecfd10e
1 changed files with 17 additions and 16 deletions

View File

@ -194,22 +194,23 @@ private void broadcastRoundResult(String gameId) {
broadcastToAll(gameId, msg); broadcastToAll(gameId, msg);
// Prüfe auf Gewinner // Prüfe auf Gewinner
int score = 6; // Punktestand für den Gewinn // Nur beenden, wenn EIN Spieler allein die höchste Punktzahl >= score hat
String winner = scores.entrySet().stream() int score = 6;
.filter(e -> e.getValue() >= score) int max = scores.values().stream().max(Integer::compareTo).orElse(0);
List<String> topScorers = scores.entrySet().stream()
.filter(e -> e.getValue() == max && max >= score)
.map(Map.Entry::getKey) .map(Map.Entry::getKey)
.findFirst() .toList();
.orElse(null);
if (winner != null) { if (topScorers.size() == 1) {
// Broadcast an alle, dass das Spiel vorbei ist String winner = topScorers.get(0);
String winMsg = JsonUtil.toJson(Map.of( String winMsg = JsonUtil.toJson(Map.of(
"type", "game-end", "type", "game-end",
"winner", winner, "winner", winner,
"scores", scores "scores", scores
)); ));
broadcastToAll(gameId, winMsg); broadcastToAll(gameId, winMsg);
game.scores().replaceAll((user , pts) -> 0); // Reset Scores für alle Spieler game.scores().replaceAll((user , pts) -> 0); // Reset Scores
} }
// else{ // else{
// // nächste Runde starten // // nächste Runde starten