如何计算指数公式的答案?

时间:2014-01-16 12:54:58

标签: php

我们必须为学校项目制作网页游戏。

但我目前陷入困境。它是一款黑手党风格的网页游戏,你可能知道其中的一款。当你的charachter去医院解决他的伤口时,他需要支付一定的金钱。这是通过以下代码计算的

 $maxHeal = 100 - $health;
 $costs =round(pow($maxHeal,1.8));

健康是0到100之间的数字,成本基于指数增长。但是,如果玩家只能买到50只,但只有100只,我怎样才能确保它只得到50,我如何确保它是前50个健康点,最贵的而不是便宜的,这将导致玩家只需输入1按回车即可获得一些廉价的健康。

我希望我的问题很明确,如果您对代码的其他部分有任何疑问,请询问

提前致谢

编辑:给予一些额外的许可,

当我达到10健康(马力)并且我想回到100马力时,我需要额外增加90马力。有一个表格,我可以输入我想要治愈多少惠普,所以我输入90,系统要求我90岁生命,所以它做100这样做我需要检查球员是否有能力支付对于那些90分。如果我不能支付90但可以支付50我想要那些50仍然添加。但如果我从1到50计数到一个40表示(剩下的我需要治愈另一个计时器),由于指数增长,它的成本会低于从1到90的计数。

所以我需要2次检查。我必须治愈我能负担得起的,所以如果我能负担得到我需要的90马力中的50马力,我将只得到50分并支付50,但是因为这会更便宜,我怎么能确保我支付50就像我支付90.所以50和40需要等于90倍

1 个答案:

答案 0 :(得分:1)

基于你的问题(这对我来说并不完全清楚,但是嘿,我的心情很好),我建立了以下例子:

//total amount of health points
$points = 20000;

//health left
$health = 10;

//how many health do we miss? 100 = maximal
$maxHeal = 100 - $health;

//counter
$i = 0;

while($points > $cost = round(pow($maxHeal-$i,1.8))) {

    //check if the user has enough points
    if ($points - $cost > 0) {
        $health++;
        echo "Healt +1 point, total: " . $health . "  (points " . $points . " - cost " . $cost . " = " . ($points - $cost) . " left)" . "\n";
    } else {
        echo "Can't heal anymore, not enough points left (" . $points . ")" . "\n";
    }

    $points -= $cost;
    $i++;
}

echo "\n";
echo "Remaining points: " . $points . ", needs points for next repair: " . $cost;

使用以下输出:

Health now: 10
Healt +1 point, total: 11  (points 20000 - cost 3293 = 16707 left)
Healt +1 point, total: 12  (points 16707 - cost 3228 = 13479 left)
Healt +1 point, total: 13  (points 13479 - cost 3163 = 10316 left)
Healt +1 point, total: 14  (points 10316 - cost 3098 = 7218 left)
Healt +1 point, total: 15  (points 7218 - cost 3035 = 4183 left)
Healt +1 point, total: 16  (points 4183 - cost 2971 = 1212 left)

Remaining points: 1212, needs points for next repair: 2909

我希望这能让你前进:)