forked from menault/TD3_DEV51_Qualite_Algo
Logique de base + chrono + score
This commit is contained in:
36
src/Score.java
Normal file
36
src/Score.java
Normal file
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
* Calcule le score du pendu à partir du nombre d'erreurs et du temps écoulé.
|
||||
*
|
||||
* Formule (simple et configurable) :
|
||||
* score = max(0, BASE - erreurs * ERROR_PENALTY - secondes * TIME_PENALTY_PER_SEC)
|
||||
*
|
||||
* @version 1.0
|
||||
* @author Adrien
|
||||
* Date : 08-10-2025
|
||||
* Licence :
|
||||
*/
|
||||
public final class Score {
|
||||
|
||||
/** Score de départ. */
|
||||
public static final int BASE = 1000;
|
||||
|
||||
/** Malus par erreur. (6 erreurs max par défaut) */
|
||||
public static final int ERROR_PENALTY = 120;
|
||||
|
||||
/** Malus par seconde écoulée. */
|
||||
public static final double TIME_PENALTY_PER_SEC = 1.0;
|
||||
|
||||
private Score() {}
|
||||
|
||||
/**
|
||||
* - nombre d'erreurs (>=0)
|
||||
* - temps écoulé en millisecondes
|
||||
* - score >= 0
|
||||
*/
|
||||
public static int compute(int errors, long elapsedMillis) {
|
||||
if (errors < 0) errors = 0;
|
||||
double timePenalty = (elapsedMillis / 1000.0) * TIME_PENALTY_PER_SEC;
|
||||
int value = (int)Math.round(BASE - errors * ERROR_PENALTY - timePenalty);
|
||||
return Math.max(0, value);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user