Php 定义有关玩家生命和伤害的变量

Php 定义有关玩家生命和伤害的变量,php,math,Php,Math,下面创建的变量定义了来自玩家和对手的伤害量。然后是生命的一部分,根据给定的伤害,每个人都会获得X%的生命。然后,将变量$player\u hp和$opporter\u hp的剩余寿命插入数据库。(更新内容为“玩家健康=?” 错误:每次我进行攻击时,它都会删除数据库中的生命($player)并向对手($attacker)添加更多的生命(应该删除,直到它为负值),但只会向对手添加更多的生命 Exemp: $player_damage = 1200 $opponent_damage

下面创建的变量定义了来自玩家和对手的伤害量。然后是生命的一部分,根据给定的伤害,每个人都会获得X%的生命。然后,将变量$player\u hp和$opporter\u hp的剩余寿命插入数据库。(更新内容为“玩家健康=?”

错误:每次我进行攻击时,它都会删除数据库中的生命($player)并向对手($attacker)添加更多的生命(应该删除,直到它为负值),但只会向对手添加更多的生命

 Exemp: $player_damage = 1200
        $opponent_damage = 500

        $player_hp = 100(hp) - $opponent_damage  
        $opponent_hp = 100(hp) - $player_damage
数据库基本上如下所示:

  Player_VIDA = -400
  Opponent_VIDA = 600
我试过用户更新player\u health=player\u health-?,但都是一样的

我使用的代码:

$player_damage = rand(5, $player_status['attack']);
$player_damage = $player_damage - ($opponent_status['defense'] * 0.3);

$opponent_damage = rand(5, $opponent_status['attack']);
$opponent_damage = $opponent_damage - ($player_status['defense'] * 0.3);

//add def to the health and subtract with damaged
$player_hp = round($opponent_damage - $player_status['health']);
$opponent_hp = round($player_damage - $opponent_status['health']);  

解决方案:我需要知道为什么玩家和对手的HP是正数,他们应该减为负数。

可能有关联,也可能没有关联,但是,你不应该用php(或大多数其他语言)做数学题使用浮点数。相反,将所有浮点数乘以100000,将它们全部转换为整数,进行减法运算,然后将结果除以相同的100000,将结果转换回浮点数,并可选地对最终结果进行四舍五入。好的,那你建议怎么做?@WesleySmith???首先我会按照上述方法进行操作。然后我会进行swap减法线逻辑。你目前做了
$对手\伤害-$玩家\状态['health']
,但那可能是
$玩家\状态['health']-$authority_damage
用于这两行。但是相信我,你会想修复上面描述的浮点数学问题。如果你不这样做,你的DB中肯定会有奇怪的错误计算。