首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环工作不正常

循环工作不正常
EN

Stack Overflow用户
提问于 2014-10-18 10:19:13
回答 1查看 69关注 0票数 0

结果是这样的:

  1. 你打敌人造成8点伤害,敌人还有92点生命值。
  2. 敌人对你造成8点伤害,你还剩86点生命
  3. 你攻击敌人5点,敌人还有81点生命值。
  4. 敌人攻击你,造成11点伤害,你还有72点生命
  5. 你攻击敌人造成12点伤害,敌人还有67点生命值。
  6. 敌人攻击你,造成7点伤害,你还有60点生命
  7. 你对敌人造成13点伤害,敌人还剩40点生命。
  8. 敌人攻击你,造成11点伤害,你还有32点生命
  9. 你对敌人造成2点伤害,敌人还有33点生命。
  10. 敌人对你造成15点伤害,你还剩16点生命
  11. 你对敌人造成15点伤害,敌人还有2点生命。
  12. 敌人对你造成17点伤害-11点生命值

你死了:-11点敌人赢了!

敌人马力是:-8你赢了!你得到了50倍!

两者都有100点生命值,正如你在第2行所看到的,当敌人命中8点伤害时,有一个“循环”丢失,剩下86点生命值。

另外,当他们中的一个死亡时,如何停止循环,使两者不能同时死亡?这样,如果一个人死了,循环就会停止,并决定胜利者。

有没有更好的方法来确定从随机开始?

代码语言:javascript
复制
<?php

$p_hp = 100;
$p_atk = 20;
$p_defence = 5;

$m_hp = 100;
$m_atk = 20;
$m_defence = 5;

if ($p_hp > 0) {

    $turn = rand(0,1);
    $hitnr = 0;

    while (($p_hp >= 0) && ($m_hp >= 0)) {

        $turn--;
        $hitnr++;

        $enemydef = $p_atk - $m_defence / 2;
        $my_damage = rand(1, $enemydef);

        $playerdef = $m_atk - $p_defence / 2;
        $enemy_damage = rand(1, $playerdef);

        $p_hp = $p_hp - $enemy_damage;
        $m_hp = $m_hp - $my_damage;

        // Player turn
        if ($turn % 2 == 0) {
            echo "<b>".$hitnr.".</b> Enemy hit you for  <font color='red'><b>".$enemy_damage . "</b></font> damage you have <b>".$p_hp." hp</b> left<br>";    

        // Monster turn    
        } else {
            echo "<b>".$hitnr.".</b> You hit enemy for  <font color='green'><b>".$my_damage . "</b></font> damage enemy has <b>".$m_hp." hp</b> left<br>";
        }

        if ($p_hp <= 0) {
            echo "<br>You died: ".$p_hp." hp<br><font color='red'><b>Enemy wins!</b></font>";
         }

        if ($m_hp <= 0) {
            echo "<br>Enemy hp is: ".$m_hp."<br><font color='green'><b>You win! You gain 50 exp!</b></font>";

        }
    }
} else {
    echo "You are dead. <a href='hospital.php'>Go to the hospital!</a>";
}

?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-18 10:38:22

除非怪物(或玩家)能够反击,否则只有目标的生命值应该降低:

代码语言:javascript
复制
$p_hp = 100;
$p_atk = 20;
$p_defence = 5;

$m_hp = 100;
$m_atk = 20;
$m_defence = 5;

if ($p_hp >= 0) {

    $turn = rand(0,1);
    $hitnr = 0;

    while (($p_hp >= 0) && ($m_hp >= 0)) {

        $turn--;
        $hitnr++;

        $enemydef = $p_atk - $m_defence / 2;
        $my_damage = rand(1, $enemydef);

        $playerdef = $m_atk - $p_defence / 2;
        $enemy_damage = rand(1, $playerdef);

        // Monster turn
        if ($turn % 2 == 0) {
            $p_hp = $p_hp - $enemy_damage;
            echo "<b>".$hitnr.".</b> Enemy hit you for  <font color='red'><b>".$enemy_damage . "</b></font> damage you have <b>".$p_hp." hp</b> left<br>";    

        // Player turn    
        } else {
            $m_hp = $m_hp - $my_damage;
            echo "<b>".$hitnr.".</b> You hit enemy for  <font color='green'><b>".$my_damage . "</b></font> damage enemy has <b>".$m_hp." hp</b> left<br>";
        }

        if ($p_hp <= 0) {
            echo "<br>You died: ".$p_hp." hp<br><font color='red'><b>Enemy wins!</b></font>";
         }

        if ($m_hp <= 0) {
            echo "<br>Enemy hp is: ".$m_hp."<br><font color='green'><b>You win! You gain 50 exp!</b></font>";

        }
    }
} else {
    echo "You are dead. <a href='hospital.php'>Go to the hospital!</a>";
}

?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26438671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档