I’m beggining in OOP with PHP, and i want to make 2 opponent fight, with the function fight. I want to have a $degat variable which is a result of a radom number between 1 to strength of attacker – (minus) dexterity of defender. So the result must be of minimum 0.
I have this code and when I var_dump it I still have negative value. I can’t see what i’m doing wrong.
JavaScript
x
public function fight(Fighter $target)
{
// $degat = (rand(1, $this->strength) - $target->dexterity) >= 0 ? (rand(1, $this->strength) - $target->dexterity) : 0;
if ((rand(1, $this->strength) - $target->dexterity) > 0) {
$degat = (rand(1, $this->strength) - $target->dexterity);
} else {
$degat = 0;
};
var_dump($degat);
$target->life -= $degat;
}
thanks !
Advertisement
Answer
Instead of storing the result of rand(1, $this->strength) - $target->dexterity)
in a variable, you could also omit the if-statement completely and reduce your method to:
JavaScript
public function fight(Fighter $target)
{
// max(a,b) returns the higher number from a and b
$target->life -= max(0, rand(1, $this->strength) - $target->dexterity);
}