-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAbstractClassesTask.txt
More file actions
37 lines (30 loc) · 3.16 KB
/
AbstractClassesTask.txt
File metadata and controls
37 lines (30 loc) · 3.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
В играх (особенно в RPG или MOBA) часто есть предметы,
которые меняют поведение персонажа, просто находясь у него в инвентаре.
Это отличный пример для абстрактного класса, так как все предметы разные,
но метод их применения (ApplyEffect) должен быть строго определен.
Задача: Система магических артефактов
Представь, что ты получил заказ на прототип системы инвентаря для инди-игры.
Нужно создать механику, где игрок может подбирать разные артефакты,
и они влияют на его характеристики или даже дают новые возможности.
Тебе нужно будет реализовать это, используя абстрактный класс и продумать логику.
Техническое задание:
1. Базовый класс персонажа:
- Создай класс Player
- У него должны быть поля/свойства: string Name, int Health, int BaseAttack (базовая атака).
- Добавь коллекцию для хранения надетых артефактов: List<BaseArtifact> Artifacts (или массив).
2. Абстрактный класс артефакта:
- Создай абстрактный класс BaseArtifact.
- У него должны быть поля: string Name, string Description.
- Главный метод: public abstract void ApplyEffect(Player player).
Этот метод будет изменять состояние игрока или его поведение.
3. Конкретные артефакты:
- Создай 2-3 класса-наследника от BaseArtifact с уникальной логикой:
- HealthAmulet: Просто увеличивает максимальное здоровье или восстанавливает текущее при применении.
- BurningBlade: При применении не просто меняет статы, а подписывается на событие атаки игрока.
- LuckStone: Дает шанс (25%) полностью избежать получения урона при следующем ранении.
4. Главная логика:
- При создании персонажа у него пустой список артефактов.
- Реализуй метод PickUpArtifact(Player player, BaseArtifact artifact),
который добавляет артефакт игроку и сразу применяет его эффект через ApplyEffect.
- У артефактов с пассивными способностями (BurningBlade, LuckStone)
ApplyEffect должен принимать делегат или событие игрока, чтобы добавить туда свою логику.