Это будет довольно странный вопрос, но нести меня.Моя проблема с массивом PHP
Я кодирую браузерную игру, и каждый игрок имеет количество охранников, каждый из которых имеет 100 здоровья. Каждый раз, когда их снимают, охранники теряют здоровье. Если все охранники мертвы, игрок берет здоровье вместо этого.
Урон от выстрела всегда перекрывается, поэтому, если игрок имеет 3 стража, а верхняя защита имеет 60 здоровья, выстрел в 100 убивает охранника 3 и оставляет охрану 2 с 60 здоровьем.
Я использую массив php для его сортировки, и он работает, за исключением случаев, когда дело касается здоровья игроков. Он не вычисляется правильно, например, все защитники игроков мертвы, а у игрока осталось 60 здоровья. Его застрелили за 100, но вместо того, чтобы умереть, петли здоровья округляются, поэтому у него есть другое здоровье здоровья вместо -40.
$p_bg = array(); // players guard count
$p_bg[0] = $rs[bgs_hp2]; // only the top guard hp is saved (bgs_hp2)
$p_hp = $rs[hp2]; // players health
$dmg = 80 // shot damage
$x = 0;
while($x < $rs[BGs2]) { $p_bg[$x] = 100; $x++; }
// As long as there's still damage to take and bgs to take it:
while($dmg && !empty($p_bg)) {
$soak = min($p_bg[0], $dmg); // not more than the first bg can take
$p_bg[0] -= $soak; // remove hps from the first bg
$dmg -= $soak; // deduct from the amount of damage to tage
if ($p_bg[0] == 0) {
// bodyguard dead, remove him from the array
array_shift($p_bg);
}
}
// If there's any damage left over, it goes to hp
$p_hp = $p_hp - $dmg;
Я не нахожусь в блоке PHP на данный момент, поэтому не могу сделать это за вас, но это ошибка, из-за которой был создан 'xdebug'. Установите его, чтобы пройти через свой код, и он покажет вам, где изменяется переменная. –