Результат примерно такой:
- Вы нанесли врагу 8 урона, у врага осталось 92 хп.
- Враг нанес вам 8 урона, у вас осталось 86 хп.
- Вы нанесли врагу 5 единиц урона, у врага осталось 81 хп.
- Враг нанес вам 11 урона, у вас осталось 72 хп.
- Вы нанесли врагу 12 урона, у врага осталось 67 хп.
- Враг нанес вам 7 урона, у вас осталось 60 хп.
- Вы нанесли врагу 13 урона, у врага осталось 40 хп.
- Враг нанес вам 11 урона, у вас осталось 32 хп.
- Вы нанесли врагу 2 урона, у врага осталось 33 хп.
- Враг нанес вам 15 урона, у вас осталось 16 хп.
- Вы наносите врагу 15 единиц урона, у врага осталось 2 хп.
- Враг нанес вам 17 урона, у вас осталось -11 хп.
Вы умерли: -11 хп Враг победил!
HP врага: -8 Вы победили! Вы получаете 50 опыта!
У обоих по 100 л.с., и, как вы можете видеть в строке 2, пропущена одна «петля», так как противник нанес 8 урона и осталось 86 л.с.
Также как остановить цикл, когда один из них умирает, чтобы оба не могли умереть одновременно? Так что, если кто-то умирает, петля останавливается и определяется победитель.
Есть ли лучший способ определить начало от случайного?
<?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>";
}
?>