← маршрут 1–48 · личный кабинет

Занятие 40. Классы: Enemy и взаимодействие объектов

45 минут учебной работыиндивидуальнотекстовая RPG

Перед началом

Что открыть: Открой рабочую версию проекта после занятия 39. Демонстрационный lesson-40.py используй как отдельный маленький пример.

Исходные данные: Начни с значений из минимального примера. Творческие изменения выполняй только после базовой проверки.

Что нужно понять

Занятие 40 посвящено теме «Классы: Enemy и взаимодействие объектов». Здесь этот навык применяется не как отдельное упражнение, а как часть общей текстовой RPG. Enemy можно оформить отдельным классом. Метод attack получает объект-цель и меняет его hp: один объект взаимодействует с другим через понятный интерфейс, а не через глобальные переменные.

Минимальный пример

class Hero:
    def __init__(self,name,hp): self.name=name; self.hp=hp
class Enemy:
    def __init__(self,name,damage): self.name=name; self.damage=damage
    def attack(self,target): target.hp=max(0,target.hp-self.damage)
hero=Hero("Лея",10); wolf=Enemy("Волк",3); wolf.attack(hero); print(hero.hp)
hero2=Hero("Рин",2); wolf.attack(hero2); print(hero2.hp)

Скачать демонстрационный .py-файл

Практика

Создай Hero('Лея',10) и Enemy('Волк',damage=3). Проведи атаку: hp героя становится 7. Затем отдельно проверь героя с hp=2: после атаки hp=0, не отрицательное.

Связь с проектом: После базового упражнения перенеси изученный приём в рабочую версию проекта и сохрани версию после занятия 40.

Критерий проверки

Метод меняет target.hp конкретного переданного объекта; обычный урон 10→7, избыточный 2→0.

Как проверить: Обычная атака и избыточный урон — два отдельные состояния.

Что сдать

Сдай рабочую версию проекта после занятия 40 и короткий протокол проверки: входные данные → ожидалось → получилось.

Если нужна поддержка: Если задача не запускается целиком, выполни один шаг отдельно и объясни, что должно измениться до следующего шага.

Типичное затруднение

Не меняй глобальную hero_hp внутри Enemy. Метод должен работать с объектом, который передан в target.

Домашняя часть

Добавь второго Enemy и проведи по одной атаке каждым по отдельным Hero.

После базы: Добавь Hero метод is_alive и используй его после атаки.

Если появилась ошибка

Traceback — сообщение Python об ошибке. Сначала прочитай его последнюю строку и найди номер строки своего файла. Повтори только тот маленький шаг, на котором возникла ошибка; после исправления снова запусти тот же проверочный случай. Если используешь ИИ, сохрани собственную попытку и попроси одну подсказку, а не готовое решение.