forked from menault/TD3_DEV51_Qualite_Algo
37 lines
1.0 KiB
Java
37 lines
1.0 KiB
Java
/**
|
|
* 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);
|
|
}
|
|
}
|