我们必须为学校项目制作网页游戏。
但我目前陷入困境。它是一款黑手党风格的网页游戏,你可能知道其中的一款。当你的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倍
答案 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
我希望这能让你前进:)