我的数学太糟糕了(对不起!)我无法弄清楚我的游戏应该是什么简单方程。
在游戏中,我为您可以无限次购买的商品定价-每次购买,价格都会上涨。
假设该商品的价格为5美元。在这里,我将购买10次: 5 + 20 + 45 + 80 + 125 + 180 + 245 + 320 + 405 + 500 = 1925美元的总费用可以购买10次。
接下来我要完成的工作是提供“购买x10”,“购买x20”等按钮,这些按钮可以算出一次购买10次的费用。
这是我当前的代码,将产生上述价格:
public function CalcuatePrice(timesAlreadyPurchased:Number,timesToBuy:int=1):Number {
var price:Number;
var basePrice:Number = 5;
var multiplier:Number;
//Always need at least 1 (items actually start at purchased 0 times)
timesAlreadyPurchased += 1;
//Apply iterations
if (timesToBuy!=1){
multiplier = (timesToBuy * (timesToBuy + timesAlreadyPurchased)) / 2;
} else {
multiplier = timesAlreadyPurchased;
}
price = basePrice * multiplier;
return price;
}
当前,这仅在timesToBuy为1时有效。问题在网上:
multiplier = (timesToBuy * (timesToBuy + baseMultiplier)) / 2;
我只是不确定使用什么等式来获取“ timesToBuy = 10”,当“ timesAlreadyPurchased = 0”时返回$ 1925的值。
此外-有人知道数学中这种类型的方程是什么吗?指数级数之和?谢谢。
答案 0 :(得分:2)
看起来像算术级数。
价格上涨了15、25、35、45等,因此第n
次购买的价格可以表示为递归关系:
通过替代解决:
简单的表达式。最后一步使用了here中的公式。例如对于n = 3
(第3次购买),价格为5 * 3^2 = 45
。
要获得总价,当然只需将这些总和:
使用上面链接的同一页面中的另一个公式。
测试5次购买
5 + 20 + 45 + 80 + 125 = 275
5 / 6 * 5 * 6 * 11 = 275
更新–“伪代码”中的公式:
price = (5.0 / 6.0) * timesToBuy * (timesToBuy + 1) * (2 * timesToBuy + 1);