Era bastante más difícil de lo que creí.
https://share.google/aimode/a4FnTeY2YfWeOYOaJSolución elegida:
Si se gana:
PlayerHasWon = true;
Playthroughs++;
SumOfTimes = SumOfTimes+TimePassed;
AverageTime = SumOfTimes/Playthroughs;
Si se pierde:
Playthroughs++;
if (PlayerHasWon == true) {
if (SumOfTimes > 0) {
SumOfTimes = AverageTime * 2 * Playthroughs;
} else {
SumOfTimes = 1;
}
} else if (SumOfTimes > 0) {
SumOfTimes = AverageTime * 2 * Playthroughs;
} else {
SumOfTimes = SumOfTimes+100;
}
AverageTime = SumOfTimes/Playthroughs;Creo que no es exacto lo que pedí, pero sino es imposible.
Cuando se pierde, lo normal es que la suma de tiempo aumenta de modo que el promedio se duplique.
Casos especiales:
- Si el jugador alguna vez ha ganado y su promedio es 0, a la suma sólo se le suma 1. No tendría sentido hacer 0*2. El castigo por perder con el promedio perfecto es que aumente 1.
- Si el jugador nunca ganó y su promedio es 0, tampoco tiene sentido el castigo de hacerle *2, se le hace +100 a la suma y queda 100.
Ya veo lo que dijo la IA de la redundancia, creo que es mejor así:
Playthroughs++;
if (SumOfTimes > 0) {
SumOfTimes = AverageTime * 2 * Playthroughs;
} else if (PlayerHasWon == true) {
SumOfTimes = 1;
} else {
SumOfTimes = SumOfTimes+100;
}
AverageTime = SumOfTimes/Playthroughs;¡Todo ese lío para un sencillo juego de cliquear cuando se dé la señal!
¿¡Por qué las Matemáticas tienen que ser tan complicadas!?