Нужно ли здесь использовать наследование? - C#

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Нужно ли здесь использовать наследование?»

textual
Листинг программы
  1. p.Endurance-=Action.Cost*(p.CEs[id].L+1);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы