Нужно ли здесь использовать наследование? - C#
Формулировка задачи:
Например, у нас есть класс нашего игрового персонажа
В игре есть только 2 вида оружия: меч и топор. У меча критак "кровотечение"(каждые T сек отнимается M хп), у топора "повышение затрат выносливости"(за все действия будет отниматься на L% больше выносливости). Шанс критака для обоих типов оружия C%.
Во время боя на персонажа может действовать несколько критических эффектов (его сначала ударили мечом, а потом топором и в обоих случаях выпал критак, и у персонажа одновременно отнимается здоровье и за его действия отнимается больше выносливости).
Я хотел сделать так:
Создать класс критического эффекта
И потом унаследовать от него критический эффект топора(AxeCE) и критический эффект меча(SwordCE)
Тогда класс Person будет таким
Когда персонажу нанесли удар и сработал крит, я хотел делать так
По-моему всё хорошо, но когда я решил реализовать крит эффект топора, я не смог найти поле L.
Код:
На "p.CEs[id].L" выдал ошибку, что не существует определения для L.
Где я делаю ошибку? Или я вообще не так делаю?
class Person { //... //поля отвечающие за его характеристики, навыки и т.д. }
class CE { public double C; }
class AxeCE : CE { public double L; } class SwordCE : CE { public int T; public int M; }
class Person { //... //поля отвечающие за его характеристики public List<CE> CEs;//Здесь содержаться выпавшие критаки AxeCE и SwordCE }
void AddCEToPerson(Person p, CE ce) { p.CEs.Add(ce); }
p.Endurance-=Action.Cost*(p.CEs[id].L+1);
Решение задачи: «Нужно ли здесь использовать наследование?»
textual
Листинг программы
p.Endurance-=Action.Cost*(p.CEs[id].L+1);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д