這將是一個很奇怪的問題,但請耐心等待。我的PHP陣列問題
我正在編寫一個基於瀏覽器的遊戲,每個玩家都有一定數量的衛兵,每人有100個衛生。每次射擊時,衛兵失去健康。如果所有的守衛都死了,玩家就會改變健康。
射門傷害總是重疊,所以如果球員有3名後衛,而頂級後衛有60名生命,則100次射門會殺死後衛3並留下60後衛2。
我使用一個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'的錯誤。安裝它來遍歷你的代碼,它會告訴你變量在哪裏被改變。 – 2015-03-31 20:39:57