Il modo migliore per farlo è utilizzare una funzione. Essa non deve apparire esattamente come questo, ma:
class Whatever
{
private double basePower = 5000;
public int numPowerUps = 5;
public double GetActualPower()
{
return basePower + (numPowerUps * basePower * 0.1);
}
}
Basta cambiare numPowerUps di nuovo a 0 quando si esauriscono. In questo modo, sembra molto più ordinato.
Una parentesi:
La ragione non sta funzionando è a causa del fatto che l'aggiunta e quindi le percentuali sottraendo non funziona. Per esempio:
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
Avrai sempre finisce con il 99% del valore originario. Se davvero si vuole prendere una scorciatoia, si potrebbe invece fare questo:
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
Ma allora siete potenzialmente suscettibile di floating point errori. Il modo di farlo è non solo più ordinato e chiaro, ma potenzialmente meno soggetto a errori.
Il tuo commento al post di coobird è esattamente il problema che sto cercando di porre rimedio. –
@ cellis5078 - Il modo migliore per farlo è ricordarsi di cosa dovrebbe tornare memorizzando quello * e non cambiandolo *. E quando vuoi vedere qual è il valore "potenziato", fai il calcolo allora. Ciò è positivo per diversi motivi: è più ordinato, è impossibile perdere traccia di quanti power-up hanno (visto che lo stai memorizzando), e non avrà errori in virgola mobile. – Smashery
+1, buona spiegazione –