Compare commits
No commits in common. "ffbd2dab1001f4fc4a43c3bd0ba5ef628faef514" and "2122bfc5217464e2f5ada382eafcbfc9e390ed95" have entirely different histories.
ffbd2dab10
...
2122bfc521
|
@ -1,7 +1,4 @@
|
||||||
Ioana,25,Hitori4x4_leicht.csv,0
|
Ioana,25,Hitori4x4_leicht.csv,0
|
||||||
test,22,Hitori4x4_leicht.csv,0
|
test,22,Hitori4x4_leicht.csv,0
|
||||||
Test2,72,Hitori5x5_leicht.csv,0
|
Test2,72,Hitori5x5_leicht.csv,0
|
||||||
Test3,100,Hitori8x8_medium.csv,0
|
Test3,100,Hitori8x8_medium.csv,0
|
||||||
Test4,200,Hitori15x15_medium.csv,10
|
|
||||||
IOANA VERSUCH 156,105,Hitori5x5_leicht.csv,0
|
|
||||||
IOANA VERSUCH 439,44,Hitori5x5_leicht.csv,0
|
|
|
@ -1,8 +1,8 @@
|
||||||
package PR2.HitoriSpiel.Fassade;
|
package PR2.HitoriSpiel.Fassade;
|
||||||
|
|
||||||
import PR2.HitoriSpiel.Domain.Action;
|
import PR2.HitoriSpiel.Domain.Action;
|
||||||
import PR2.HitoriSpiel.Domain.HitoriBoard;
|
|
||||||
import PR2.HitoriSpiel.Domain.HitoriValidator;
|
import PR2.HitoriSpiel.Domain.HitoriValidator;
|
||||||
|
import PR2.HitoriSpiel.Domain.HitoriBoard;
|
||||||
import PR2.HitoriSpiel.Domain.HitoriCell;
|
import PR2.HitoriSpiel.Domain.HitoriCell;
|
||||||
import PR2.HitoriSpiel.GUI.PauseMenu;
|
import PR2.HitoriSpiel.GUI.PauseMenu;
|
||||||
import PR2.HitoriSpiel.GUI.StartMenu;
|
import PR2.HitoriSpiel.GUI.StartMenu;
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
package PR2.HitoriSpiel.Fassade;
|
package PR2.HitoriSpiel.Fassade;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
public class HighscoreManager {
|
public class HighscoreManager {
|
||||||
|
@ -94,29 +96,6 @@ public class HighscoreManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Durchschnittszeit für jedes Spielfeld berechnen
|
|
||||||
public Map<String, Double> getAverageTimesByBoard() {
|
|
||||||
fileLock.lock();
|
|
||||||
try {
|
|
||||||
Map<String, List<Integer>> boardScores = new HashMap<>();
|
|
||||||
|
|
||||||
for (Highscore highscore : highscoreList) {
|
|
||||||
boardScores.computeIfAbsent(highscore.getBoardName(), k -> new ArrayList<>()).add(highscore.getScore());
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, Double> averageTimes = new HashMap<>();
|
|
||||||
for (Map.Entry<String, List<Integer>> entry : boardScores.entrySet()) {
|
|
||||||
List<Integer> scores = entry.getValue();
|
|
||||||
double average = scores.stream().mapToInt(Integer::intValue).average().orElse(0.0);
|
|
||||||
averageTimes.put(entry.getKey(), average);
|
|
||||||
}
|
|
||||||
|
|
||||||
return averageTimes;
|
|
||||||
} finally {
|
|
||||||
fileLock.unlock();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Highscores abrufen
|
// Highscores abrufen
|
||||||
public List<Highscore> getHighscores() {
|
public List<Highscore> getHighscores() {
|
||||||
return new ArrayList<>(highscoreList); // Modifizierbare Kopie zurückgeben
|
return new ArrayList<>(highscoreList); // Modifizierbare Kopie zurückgeben
|
||||||
|
@ -163,8 +142,6 @@ public class HighscoreManager {
|
||||||
return errors;
|
return errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getScore() {return time;}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return playerName + "," + time + "," + boardName + "," + errors;
|
return playerName + "," + time + "," + boardName + "," + errors;
|
||||||
|
|
|
@ -7,7 +7,6 @@ import javax.swing.table.DefaultTableModel;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
// aktueller Stand
|
// aktueller Stand
|
||||||
public class HighscoreDialog extends JDialog {
|
public class HighscoreDialog extends JDialog {
|
||||||
|
@ -20,7 +19,7 @@ public class HighscoreDialog extends JDialog {
|
||||||
super(parentFrame, "Highscoreliste", true);
|
super(parentFrame, "Highscoreliste", true);
|
||||||
|
|
||||||
this.highscoreManager = new HighscoreManager();
|
this.highscoreManager = new HighscoreManager();
|
||||||
this.tableModel = new DefaultTableModel(new String[]{"Platz", "Name", "Zeit (Sek.)", "Fehler", "Spielfeld", "Durchschnittszeit"}, 0);
|
this.tableModel = new DefaultTableModel(new String[]{"Platz", "Name", "Zeit (Sek.)", "Fehler", "Spielfeld"}, 0);
|
||||||
|
|
||||||
setLayout(new BorderLayout());
|
setLayout(new BorderLayout());
|
||||||
setSize(600, 400);
|
setSize(600, 400);
|
||||||
|
@ -59,7 +58,6 @@ public class HighscoreDialog extends JDialog {
|
||||||
private void loadHighscoresForBoard(String boardName) {
|
private void loadHighscoresForBoard(String boardName) {
|
||||||
tableModel.setRowCount(0); // Tabelle zurücksetzen
|
tableModel.setRowCount(0); // Tabelle zurücksetzen
|
||||||
List<HighscoreManager.Highscore> highscores = highscoreManager.getHighscoresForBoard(boardName);
|
List<HighscoreManager.Highscore> highscores = highscoreManager.getHighscoresForBoard(boardName);
|
||||||
Map<String, Double> averageTimes = highscoreManager.getAverageTimesByBoard();
|
|
||||||
|
|
||||||
if (highscores.isEmpty()) {
|
if (highscores.isEmpty()) {
|
||||||
JOptionPane.showMessageDialog(this,
|
JOptionPane.showMessageDialog(this,
|
||||||
|
@ -71,15 +69,12 @@ public class HighscoreDialog extends JDialog {
|
||||||
|
|
||||||
int rank = 1;
|
int rank = 1;
|
||||||
for (HighscoreManager.Highscore highscore : highscores) {
|
for (HighscoreManager.Highscore highscore : highscores) {
|
||||||
String bName = highscore.getBoardName().replaceAll("\\.csv$", ""); // .csv entfernen
|
|
||||||
double averageTime = averageTimes.getOrDefault(highscore.getBoardName(), 0.0);
|
|
||||||
tableModel.addRow(new Object[]{
|
tableModel.addRow(new Object[]{
|
||||||
rank++, // Platzierung
|
rank++, // Platznummer
|
||||||
highscore.getPlayerName(), // Name
|
highscore.getPlayerName(), // Spielername
|
||||||
highscore.getScore(), // Punkte
|
highscore.getTime(), // Zeit in Sekunden
|
||||||
highscore.getErrors(), //Errors
|
highscore.getErrors(), // Anzahl der Fehler
|
||||||
bName, // Spielfeld
|
highscore.getBoardName() // Spielfeldname
|
||||||
String.format("%.2f", averageTime) // Durchschnittszeit
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue