JustCaptain kod-buduschego
a5118039082da497bc3866bd638429985886fdcd
Перейти к файлу
Код
kod-buduschego Python 2025-20264.1. Классы и объектыpracticesgameshunter.py
anc update c70a58f 8 октября 2026 г.
hunter.py
"""
Уровень 1 — почувствовать смысл объектов

1. Гильдия охотников на чудовищ

Контекст: ты делаешь RPG-систему для гильдии.

Создай класс охотника.

У каждого охотника:

- имя
- здоровье
- выносливость
- уровень
- оружие

Методы:

- attack(enemy) — наносит урон
- rest() — восстанавливает выносливость
- level_up() — повышает уровень и характеристики
- change_weapon(new_weapon)

Дополнительно:

- если выносливость = 0 → атаковать нельзя
- оружие влияет на урон

Что даст задача:
Ты поймёшь, почему объект = состояние + поведение.


"""


class Weapon:
    def __init__(self, name: str, damage: int) -> None:
        self.name: str = name
        self.damage: int = damage

    def get_damage(self) -> int:
        return self.damage


class Entity:
    def __init__(
        self,
        name: str,
        weapon: Weapon | None = None,
        hp: int = 100,
        stamina: int = 100,
        level: int = 1,
    ) -> None:
        self.name: str = name
        self.hp: int = hp
        self.stamina: int = stamina
        self.level: int = level
        self.weapon: Weapon | None = weapon

    def rest(self) -> None:
        self.stamina = 100

    def change_hp(self, hp: int) -> bool:
        self.hp = self.hp + hp
        if self.hp <= 0:
            return False
        return True

    def level_up(self) -> None:
        self.level += 1

    def change_weapon(self, new_weapon: Weapon) -> None:
        self.weapon = new_weapon

    def attack(self, enemy: Entity) -> None:
        if self.stamina <= 0:
            print("Мало выносливости")
        else:
            if self.weapon:
                enemy.change_hp(hp=(self.weapon.get_damage() * -1))
            else:
                enemy.change_hp(hp=-5)


knife_rust: Weapon = Weapon(name="Ржаивый кинжал", damage=25)
player: Entity = Entity(name="Главный герой", weapon=knife_rust)
enemy_chicken: Entity = Entity(name="Страшна курица")

player.attack(enemy=enemy_chicken)
print(enemy_chicken.hp)