fork(2) download
  1. <?php
  2. header("Content-Type: text/plain; charset=utf-8");
  3. class Game
  4. {
  5. public $hero;
  6. public $monsters;
  7. public $gold=0;
  8. public function __construct($monsters, $items)
  9. {
  10. $this->hero = new Hero($items);
  11. $this->monsters = $monsters;
  12. }
  13. public function getKillMonster()
  14. {
  15. $monsters = $this->monsters; //копия переменной монстров
  16. for ($i = 1; $i <= $this->monsters; $i++)
  17. {
  18. $items = $this->hero->items;
  19. $typeOfNewItem = mt_rand(1, count($items)); //генерация номера слота выпавшего предмета
  20. $oldItem = $this->hero->getOldItem($typeOfNewItem); //уровень старого предмета
  21. $newItem = mt_rand (1, ($oldItem +1)); //генерация илвл нового предмета
  22. if ($newItem >= $oldItem)
  23. {
  24. $this->hero->getChangeItem($typeOfNewItem, $newItem); //замена старого предмета новым
  25. $this->gold += $oldItem; //продажа старого предмета
  26. }
  27. $monsters--;
  28.  
  29. }
  30. $this->monsters = $monsters; // количество монстров оставшихся в живых
  31. }
  32. }
  33. class Hero
  34. {
  35. public $items=array();
  36. public function __construct($k)
  37. {
  38. $items = array();
  39. for ($i = 1; $i <= $k; $i++)
  40. {
  41. $item = new Item($i);
  42. $items[] = $item;
  43. }
  44. $this->items = $items;
  45. }
  46. public function getOldItem($numberItem)//взять илвл старого предмета данного слота
  47. {
  48. foreach ($this->items as $item) // перебор, чтобы добраться до нужного предмета
  49. {
  50. if ($item->slot == $numberItem) //проверка на подходящий слот
  51. {
  52. return $item->itemLvl; //возвращение уровня предмета
  53. }
  54. }
  55. }
  56. public function getChangeItem($numberItem, $itemLvl) //замена старого предмета новым
  57. {
  58. foreach ($this->items as $item) // перебор, чтобы добраться до нужного предмета
  59. {
  60. if ($item->slot == $numberItem) //проверка на подходящий слот
  61. {
  62. $item->itemLvl = $itemLvl; //присвоение нового уровня предмета
  63. }
  64. }
  65. }
  66. }
  67. class Item
  68. {
  69. public $slot;
  70. public $itemLvl=1;
  71. public function __construct($slot)
  72. {
  73. return $this->slot = $slot;
  74. }
  75.  
  76. }
  77. function getGame($n, $k)
  78. {
  79. $game = new Game ($n, $k);
  80. return $game;
  81. }
  82. $game = getGame(5, 2);
  83. print_r($game);
  84. $game->getKillMonster();
  85. print_r($game);
Success #stdin #stdout 0.02s 24400KB
stdin
Standard input is empty
stdout
Game Object
(
    [hero] => Hero Object
        (
            [items] => Array
                (
                    [0] => Item Object
                        (
                            [slot] => 1
                            [itemLvl] => 1
                        )

                    [1] => Item Object
                        (
                            [slot] => 2
                            [itemLvl] => 1
                        )

                )

        )

    [monsters] => 5
    [gold] => 0
)
Game Object
(
    [hero] => Hero Object
        (
            [items] => Array
                (
                    [0] => Item Object
                        (
                            [slot] => 1
                            [itemLvl] => 4
                        )

                    [1] => Item Object
                        (
                            [slot] => 2
                            [itemLvl] => 2
                        )

                )

        )

    [monsters] => 0
    [gold] => 8
)