Лучший способ сделать это - использовать функцию. Это не должно выглядеть точно так, но:
class Whatever
{
private double basePower = 5000;
public int numPowerUps = 5;
public double GetActualPower()
{
return basePower + (numPowerUps * basePower * 0.1);
}
}
Просто измените numPowerUps обратно на 0, когда они закончатся. Таким образом, это выглядит намного аккуратнее.
В сторону:
Причина, по которой он не работает, заключается в том, что сложение, а затем вычитание процентов не работает. Например:
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
У вас всегда будет 99% от первоначальной стоимости. Если вы действительно хотите использовать ярлык, вместо этого вы можете сделать следующее:
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
Но тогда вы потенциально подвержены ошибкам с плавающей запятой. Функциональный способ сделать это не только аккуратнее и понятнее, но и потенциально менее подвержен ошибкам.