<?php class Hero { public $name; public $health; public $armorLow; public $armorHigh; public $block; public $dodgeCrit; public $crit; public $attackLow; public $attackHigh; public $charisma; public $doubleHit = 0; public function __construct($name, $attackLow, $attackHigh, $health, $armorLow, $armorHigh, $block, $dodgeCrit, $crit, $charisma) { $this->name = $name; $this->attackLow = $attackLow; $this->attackHigh = $attackHigh; $this->health = $health; $this->armorLow = $armorLow; $this->armorHigh = $armorHigh; $this->block = $block; $this->dodgeCrit = $dodgeCrit; $this->crit = $crit; $this->charisma = $charisma; } public function getAverageDmg() //средний урон персонажа { return $damage; } public function getAverageDmgReduction() //среднее число блокируемое доспехами урона { return $reduction; } public function getCrit() // рассчет шанса критического урона с возвратом модификатора атаки { if ($roll <= $this->crit) { if ($roll > $this->dodgeCrit) { $critAmplify = 2; return $critAmplify; } } $critAmplify = 1; return $critAmplify; } public function getBlock() //рассчет блока наподобие крита выше. { if ($roll <= $this->block) { $blockAmplify = 0; } else { $blockAmplify = 1; } return $blockAmplify; } } class Game { public $heroFirst; public $heroSecond; public function __construct($heroFirst, $heroSecond) { $this->heroFirst = $heroFirst; $this->heroSecond = $heroSecond; } private function makeOneHitFirstHero() // урон первого героя по второму { $block = $this->heroFirst->getBlock(); $crit = $this->heroFirst->getCrit(); $damage1 = ($this->heroFirst->getAverageDmg() - $this->heroSecond->getAverageDmgReduction()) * $crit * $block; if ($block == 1) { if ($crit == 2) { echo "{$this->heroFirst->name} наносит критический урон \n"; } } else { echo "Урон {$this->heroFirst->name} заблокирован щитом {$this->heroSecond->name} \n"; } echo "{$this->heroFirst->name} наносит $damage1 урона. \n"; if ($this->heroFirst->doubleHit != 0) { if ($roll <= $this->heroFirst->doubleHit) { echo "Вторая атака за счет преимущества в харизме: \n"; $block = $this->heroFirst->getBlock(); $crit = $this->heroFirst->getCrit(); $damage2 = ($this->heroFirst->getAverageDmg() - $this->heroFirst->getAverageDmgReduction()) * $crit * $block; if ($block == 1) { if ($crit == 2) { echo "{$this->heroFirst->name} наносит критический урон \n"; } } else { echo "Урон {$this->heroFirst->name} заблокирован щитом {$this->heroSecond->name} \n"; } echo "{$this->heroFirst->name} наносит $damage2 урона. \n"; } } $damage = $damage1; } else { $damage = $damage1 + $damage2; } return $damage; } private function makeOneHitSecondHero() //урон второго героя по первому { $block = $this->heroSecond->getBlock(); $crit = $this->heroSecond->getCrit(); $damage1 = ($this->heroSecond->getAverageDmg() - $this->heroSecond->getAverageDmgReduction()) * $crit * $block; if ($block == 1) { if ($crit == 2) { echo "{$this->heroSecond->name} наносит критический урон \n"; } } else { echo "Урон {$this->heroSecond->name} заблокирован щитом {$this->heroFirst->name} \n"; } echo "{$this->heroSecond->name} наносит $damage1 урона. \n"; if ($this->heroSecond->doubleHit != 0) { if ($roll <= $this->heroSecond->doubleHit) { echo "Вторая атака за счет преимущества в харизме: \n"; $block = $this->heroSecond->getBlock(); $crit = $this->heroSecond->getCrit(); $damage2 = ($this->heroSecond->getAverageDmg() - $this->heroFirst->getAverageDmgReduction()) * $crit * $block; if ($block == 1) { if ($crit == 2) { echo "{$this->heroSecond->name} наносит критический урон \n"; } } else { echo "Урон {$this->heroSecond->name} заблокирован щитом {$this->heroFirst->name} \n"; } echo "{$this->heroSecond->name} наносит $damage2 урона. \n"; } } $damage = $damage1; } else { $damage = $damage1 + $damage2; } return $damage; } public function fillDoubleHitString() //присвоить героям шанс на вторую атаку исходя из разницы в харизме { if ($charAbs > 100) { $charAbs = 100; } $charOne = $this->heroFirst->charisma; $charTwo = $this->heroSecond->charisma; if ($charOne > $charTwo) { $this->heroFirst->doubleHit = $charAbs; } elseif ($charOne < $charTwo) { $this->heroSecond->doubleHit = $charAbs; } } public function makeTwentyRounds() { $firstFullDmg = 0; $secondFullDmg = 0; $this->fillDoubleHitString(); for ($i = 1; $i <= 20; $i++) { echo "$i раунд: \n"; $firstDmg = $this->makeOneHitFirstHero(); $firstFullDmg += $firstDmg; $secondDmg = $this->makeOneHitSecondHero(); $secondFullDmg += $secondDmg; if ($this->heroFirst->health <= $secondDmg) { $secondDmg = $this->heroFirst->health - 1; } if ($this->heroSecond->health <= $firstDmg) { $firstDmg = $this->heroSecond->health - 1; } $this->heroFirst->health -= $secondDmg; $this->heroSecond->health -= $firstDmg; echo $str . "\n"; if ($this->heroFirst->health == 1) { echo "{$this->heroSecond->name} победил \n"; break; } if ($this->heroSecond->health == 1) { echo "{$this->heroFirst->name} победил \n"; break; } } if ($firstFullDmg > $secondFullDmg) { echo $this->heroFirst->name . " побеждает в поединке. \n {$this->heroSecond->name} пал на землю без сил. \n"; } elseif ($firstFullDmg < $secondFullDmg) { echo "{$this->heroSecond->name} побеждает в поединке. \n {$this->heroFirst->name} пал на землю без сил. \n"; } if ($firstFullDmg == $secondFullDmg) { echo "Поединок заканчивается ничьей \n."; } } } $hero1 = new Hero('DoctorS', 504, 563, 19520, 225, 276, 39, 25, 51, 1276); $hero2 = new Hero('Demarest', 350, 397, 14275, 214, 261, 50, 25, 41, 775); $hero11 = new Hero('DoctorS', 504, 563, 19520, 225, 276, 39, 25, 51, 1276); $hero12 = new Hero('BkHitMan', 460, 515, 18919, 216, 264, 31, 23, 28, 1072); $game = new Game($hero1, $hero2); $game->makeTwentyRounds(); $game2 = new Game($hero11, $hero12); echo "\n\n\n\n\n"; $game2->makeTwentyRounds();
Standard input is empty
1 раунд: Урон DoctorS заблокирован щитом Demarest DoctorS наносит 0 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит 284 урона. Урон Demarest заблокирован щитом DoctorS Demarest наносит 0 урона. __________________________________________ 2 раунд: DoctorS наносит критический урон DoctorS наносит 586 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит 332 урона. Demarest наносит критический урон Demarest наносит 234 урона. __________________________________________ 3 раунд: Урон DoctorS заблокирован щитом Demarest DoctorS наносит 0 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом Demarest DoctorS наносит 0 урона. Demarest наносит критический урон Demarest наносит 284 урона. __________________________________________ 4 раунд: DoctorS наносит 297 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом Demarest DoctorS наносит 0 урона. Demarest наносит 118 урона. __________________________________________ 5 раунд: Урон DoctorS заблокирован щитом Demarest DoctorS наносит 0 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом Demarest DoctorS наносит 0 урона. Demarest наносит 152 урона. __________________________________________ 6 раунд: DoctorS наносит критический урон DoctorS наносит 574 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом Demarest DoctorS наносит 0 урона. Demarest наносит 142 урона. __________________________________________ 7 раунд: DoctorS наносит 284 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит 236 урона. Урон Demarest заблокирован щитом DoctorS Demarest наносит 0 урона. __________________________________________ 8 раунд: DoctorS наносит 291 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит 264 урона. Demarest наносит 160 урона. __________________________________________ 9 раунд: Урон DoctorS заблокирован щитом Demarest DoctorS наносит 0 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит критический урон DoctorS наносит 626 урона. Demarest наносит критический урон Demarest наносит 324 урона. __________________________________________ 10 раунд: DoctorS наносит 330 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом Demarest DoctorS наносит 0 урона. Demarest наносит 98 урона. __________________________________________ 11 раунд: DoctorS наносит 340 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит 229 урона. Урон Demarest заблокирован щитом DoctorS Demarest наносит 0 урона. __________________________________________ 12 раунд: DoctorS наносит критический урон DoctorS наносит 542 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит критический урон DoctorS наносит 534 урона. Урон Demarest заблокирован щитом DoctorS Demarest наносит 0 урона. __________________________________________ 13 раунд: Урон DoctorS заблокирован щитом Demarest DoctorS наносит 0 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит 282 урона. Demarest наносит критический урон Demarest наносит 338 урона. __________________________________________ 14 раунд: Урон DoctorS заблокирован щитом Demarest DoctorS наносит 0 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом Demarest DoctorS наносит 0 урона. Урон Demarest заблокирован щитом DoctorS Demarest наносит 0 урона. __________________________________________ 15 раунд: DoctorS наносит критический урон DoctorS наносит 588 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит 287 урона. Урон Demarest заблокирован щитом DoctorS Demarest наносит 0 урона. __________________________________________ 16 раунд: Урон DoctorS заблокирован щитом Demarest DoctorS наносит 0 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом Demarest DoctorS наносит 0 урона. Урон Demarest заблокирован щитом DoctorS Demarest наносит 0 урона. __________________________________________ 17 раунд: DoctorS наносит критический урон DoctorS наносит 562 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом Demarest DoctorS наносит 0 урона. Demarest наносит критический урон Demarest наносит 274 урона. __________________________________________ 18 раунд: DoctorS наносит критический урон DoctorS наносит 638 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит критический урон DoctorS наносит 590 урона. Demarest наносит 145 урона. __________________________________________ 19 раунд: Урон DoctorS заблокирован щитом Demarest DoctorS наносит 0 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит критический урон DoctorS наносит 554 урона. Demarest наносит 122 урона. __________________________________________ 20 раунд: DoctorS наносит 295 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит критический урон DoctorS наносит 632 урона. Demarest наносит 147 урона. __________________________________________ DoctorS побеждает в поединке. Demarest пал на землю без сил. 1 раунд: DoctorS наносит критический урон DoctorS наносит 542 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. Урон BkHitMan заблокирован щитом DoctorS BkHitMan наносит 0 урона. __________________________________________ 2 раунд: DoctorS наносит 332 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. BkHitMan наносит 283 урона. __________________________________________ 3 раунд: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. BkHitMan наносит 260 урона. __________________________________________ 4 раунд: DoctorS наносит 294 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. BkHitMan наносит 228 урона. __________________________________________ 5 раунд: DoctorS наносит 301 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит критический урон DoctorS наносит 532 урона. Урон BkHitMan заблокирован щитом DoctorS BkHitMan наносит 0 урона. __________________________________________ 6 раунд: DoctorS наносит 276 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит 284 урона. BkHitMan наносит 267 урона. __________________________________________ 7 раунд: DoctorS наносит 299 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. Урон BkHitMan заблокирован щитом DoctorS BkHitMan наносит 0 урона. __________________________________________ 8 раунд: DoctorS наносит 327 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. Урон BkHitMan заблокирован щитом DoctorS BkHitMan наносит 0 урона. __________________________________________ 9 раунд: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит 283 урона. BkHitMan наносит критический урон BkHitMan наносит 526 урона. __________________________________________ 10 раунд: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. BkHitMan наносит 237 урона. __________________________________________ 11 раунд: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит критический урон DoctorS наносит 546 урона. BkHitMan наносит 203 урона. __________________________________________ 12 раунд: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит критический урон DoctorS наносит 526 урона. Урон BkHitMan заблокирован щитом DoctorS BkHitMan наносит 0 урона. __________________________________________ 13 раунд: DoctorS наносит критический урон DoctorS наносит 500 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит 292 урона. Урон BkHitMan заблокирован щитом DoctorS BkHitMan наносит 0 урона. __________________________________________ 14 раунд: DoctorS наносит критический урон DoctorS наносит 576 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит 281 урона. BkHitMan наносит 210 урона. __________________________________________ 15 раунд: DoctorS наносит 329 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. BkHitMan наносит 297 урона. __________________________________________ 16 раунд: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит критический урон DoctorS наносит 546 урона. Урон BkHitMan заблокирован щитом DoctorS BkHitMan наносит 0 урона. __________________________________________ 17 раунд: DoctorS наносит 283 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. Урон BkHitMan заблокирован щитом DoctorS BkHitMan наносит 0 урона. __________________________________________ 18 раунд: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит критический урон DoctorS наносит 600 урона. Урон BkHitMan заблокирован щитом DoctorS BkHitMan наносит 0 урона. __________________________________________ 19 раунд: DoctorS наносит 294 урона. Вторая атака за счет преимущества в харизме: DoctorS наносит 261 урона. BkHitMan наносит 260 урона. __________________________________________ 20 раунд: DoctorS наносит 266 урона. Вторая атака за счет преимущества в харизме: Урон DoctorS заблокирован щитом BkHitMan DoctorS наносит 0 урона. BkHitMan наносит 266 урона. __________________________________________ DoctorS побеждает в поединке. BkHitMan пал на землю без сил.