← маршрут 1–48 · личный кабинет
Занятие 40. Классы: Enemy и взаимодействие объектов
Перед началом
Что открыть: Открой рабочую версию проекта после занятия 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 об ошибке. Сначала прочитай его последнюю строку и найди номер строки своего файла. Повтори только тот маленький шаг, на котором возникла ошибка; после исправления снова запусти тот же проверочный случай. Если используешь ИИ, сохрани собственную попытку и попроси одну подсказку, а не готовое решение.