fork 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. } else {
  27. $this->gold += $newItem; //продажа нового предмета, так как он хуже старого
  28. }
  29. $monsters--;
  30.  
  31. }
  32. $this->monsters = $monsters; // количество монстров оставшихся в живых
  33. }
  34. }
  35. class Hero
  36. {
  37. public $items=array();
  38. public function __construct($k)
  39. {
  40. $items = array();
  41. for ($i = 1; $i <= $k; $i++)
  42. {
  43. $item = new Item($i);
  44. $items[] = $item;
  45. }
  46. $this->items = $items;
  47. }
  48. public function getOldItem($numberItem)//взять илвл старого предмета данного слота
  49. {
  50. foreach ($this->items as $item) // перебор, чтобы добраться до нужного предмета
  51. {
  52. if ($item->slot == $numberItem) //проверка на подходящий слот
  53. {
  54. return $item->itemLvl; //возвращение уровня предмета
  55. }
  56. }
  57. }
  58. public function getChangeItem($numberItem, $itemLvl) //замена старого предмета новым
  59. {
  60. foreach ($this->items as $item) // перебор, чтобы добраться до нужного предмета
  61. {
  62. if ($item->slot == $numberItem) //проверка на подходящий слот
  63. {
  64. $item->itemLvl = $itemLvl; //присвоение нового уровня предмета
  65. }
  66. }
  67. }
  68. }
  69. class Item
  70. {
  71. public $slot;
  72. public $itemLvl=1;
  73. public function __construct($slot)
  74. {
  75. return $this->slot = $slot;
  76. }
  77.  
  78. }
  79. function getGame($n, $k)
  80. {
  81. $game = new Game ($n, $k);
  82. return $game;
  83. }
  84. $game = getGame(5, 2);
  85. print_r($game);
  86. $game->getKillMonster();
  87. print_r($game);
Success #stdin #stdout 0.02s 24448KB
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] => 2
                        )

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

                )

        )

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