Сегодня посмотрим, как герои атакуют, умирают, удаляются из игры и как всё это двигает основной игровой цикл.
💎 Игровой цикл
Главная функция — main_game().
Она делает 4 вещи:
1. спрашивает у пользователя, сколько будет героев
2. создаёт героев выбранных типов
3. запускает цикл боя
4. выводит победителя
После создания персонажей начинается:
🩸 «Великая битва»
Игровой цикл:
1. Все персонажи атакуют друг друга по очереди
2. Мы проверяем, кто ещё жив
3. Убитые удаляются
4. Если остался один — он победил
⚔️ Функция start_game
Здесь происходит сама битва:
1. герой выбирает цель
2. вызывает свой attack()
3. цель вызывает свой set_damage()
Благодаря полиморфизму:
✅ маг защищается
✅ гном может получить пассивку
✅ человек иногда уклоняется
✅ орк входит в ярость
✅ эльф делает крит
То есть одна и та же строка кода работает по-разному в зависимости от типа героя.
Это и есть мощь ООП.
🎃 Удаление павших
После раунда вызывается:
clear_death()
Это анимация, созданная в файле animation_battle.py, при помощи библиотеки rich.
Она показывает прогресс-бар «чистки трупов» — это просто эстетика, но очень добавляет атмосферы.
После анимации:
if death.hp <= 0:
del list_heroes[index]
Герой исчезает из списка — он официально мёртв.
😃 Финал
Когда в списке остаётся 1 герой:
Победа за ... !
Вот и всё — мини-боевая система завершена. 🥃
👨💻 Что это даёт тебе как разработчику?
☀️понимание архитектуры в стиле «каждый объект — самостоятельный»
☀️работу с полиморфизмом
☀️обработку событий и случайностей
☀️построение игрового цикла
☀️работу с внешними файлами и анимациями
☀️практику структурирования большого кода
Это отличный учебный кейс, который можно расширять:
☀️добавить оружие
☀️инвентарь
☀️уровни
☀️прокачку умений
☀️магические эффекты
☀️логирование
☀️UI
👉БЛОК АНИМАЦИИ СМОТРИ ЗДЕСЬ
#КейсыPython #ООП #CodeShadow
