La mejor manera de hacerlo es mediante el uso de una función. No tiene que mirar exactamente como esta, pero:
class Whatever
{
private double basePower = 5000;
public int numPowerUps = 5;
public double GetActualPower()
{
return basePower + (numPowerUps * basePower * 0.1);
}
}
Sólo cambia numPowerUps de nuevo a 0 cuando se les acaba. De esta manera, se ve mucho más ordenado.
Un aparte:
La razón por la que no funciona es debido al hecho de que la adición y luego restar porcentajes no funciona. Por ejemplo:
1. What is 10% of 100? --> 10
2. Add that to the 100 --> 110
3. What is 10% of 110? --> 11
4. Subtract that from 110 --> 99
Siempre obtendrá el 99% de su valor original. Si realmente quiere tomar un atajo, en su lugar podría hacer esto:
1. What is 10% of 100? --> 10
2. Add that to the 100 --> 110
3. What is (100/11) = 9.09090909...% of 110? --> 10
4. Subtract that from 110 --> 100
Pero entonces está potencialmente susceptibles a los errores de coma flotante. La forma de hacerlo funcionar no solo es más nítida y clara, sino potencialmente menos propensa a errores.
Su comentario a la publicación de coobird es exactamente el problema que trato de remediar. –
@ cellis5078 - La mejor manera de hacerlo es recordando a qué debe regresar almacenando * y no cambiándolo *. Y cuando desee ver cuál es el valor de "encendido", haga el cálculo a continuación. Eso es bueno por varias razones: es más nítido, es imposible perder la cuenta de cuántos power-ups tienen (ya que también lo estás almacenando), y no va a tener errores de coma flotante. – Smashery
+1, buena explicación –