Код IT
← Каталог

Python — диаблоид — `systems/loot_system.py`

Фрагмент из «Python — диаблоид»: `systems/loot_system.py`.

python spinoffencyclopedia9-04-razrabotka-igr-praktikum-razrabotki-igr-6 embed URL статья в энциклопедии
Python main.py
import random

from core.event_bus import EventBus
from entities.item import GroundItem


class LootSystem:
    DROP_CHANCE = 0.35

    def __init__(self, events: EventBus) -> None:
        self.events = events
        events.subscribe("enemy_killed", self._on_enemy_killed)

    def _on_enemy_killed(self, enemy, killer, **kw) -> None:
        if random.random() > self.DROP_CHANCE:
            return
        if random.random() < 0.25:
            item = GroundItem(
                enemy.x,
                enemy.y,
                item_id="sword_1",
                label="Меч",
                color=(180, 180, 220),
            )
        else:
            item = GroundItem(enemy.x, enemy.y, item_id="potion", label="Зелье HP")
        self.events.emit("item_dropped", item=item)
import random

from core.event_bus import EventBus
from entities.item import GroundItem


class LootSystem:
    DROP_CHANCE = 0.35

    def __init__(self, events: EventBus) -> None:
        self.events = events
        events.subscribe("enemy_killed", self._on_enemy_killed)

    def _on_enemy_killed(self, enemy, killer, **kw) -> None:
        if random.random() > self.DROP_CHANCE:
            return
        if random.random() < 0.25:
            item = GroundItem(
                enemy.x,
                enemy.y,
                item_id="sword_1",
                label="Меч",
                color=(180, 180, 220),
            )
        else:
            item = GroundItem(enemy.x, enemy.y, item_id="potion", label="Зелье HP")
        self.events.emit("item_dropped", item=item)