👋 Сегодня разберём интересный и очень практичный кейс по ООП — мини-боёвку, где персонажи разных рас сражаются между собой. Код работает как маленькая RPG: есть маги, эльфы, гномы, орки, люди — и у каждого свой стиль атаки, защита и реплики.
Почему этот проект полезен?
Потому что он показывает реальное применение ООП, а не абстрактные «фрукты» и «животных».
Здесь задействованы:
☀️наследование
☀️полиморфизм
☀️переопределение методов
☀️случайные события (рандомные бонусы, защита, уклонения)
☀️взаимодействие между объектами
☀️отдельный модуль-анимация (используется библиотека rich)
Проект запускается через интерактивный выбор персонажей — после чего все герои поочерёдно нападают друг на друга, пока не останется один победитель.
В этом посте разберём основу — базовый класс Hero и архитектуру проекта.
🤍 Базовый класс Hero
Hero — это фундамент. Он задаёт общую структуру для всех персонажей.
👩💻 Что задаётся в __init__:
name — имя героя
type — раса
hp — текущее здоровье
hp_default — максимальное здоровье (для отображения)
damage — базовый урон
id — уникальный ID (нужен, чтобы герой не атаковал сам себя)
Дальше идут методы, которые должны существовать у каждого героя, но в базовом классе они не реализованы:
☀️attack
☀️set_damage
☀️speak
То есть базовый класс — чистый шаблон, который говорит:
"Вот что должен уметь любой герой. А как именно — решай в дочернем классе."
Это и есть идея полиморфизма.
✅ Почему это удобно?
Потому что дальше все расы (маг, эльф, орк…) наследуют от Hero и просто переопределяют нужное поведение:
⚡️маг кастует защиту
⚡️эльф может увеличить точность
⚡️гном получает случайную «пассивку»
⚡️человек иногда полностью уворачивается
⚡️орк может войти в ярость
Каждый класс — своя мини-механика.
В следующем посте мы разберём каждый тип персонажа и их уникальные способности — это самая «вкусная» часть проекта ❗️
А после этого, в посте №3 — посмотрим, как работает сама битва и игровой цикл.
Продолжение скоро! 👨💻
#КейсыPython #ООП #CodeShadow
