2013-08-06 2 views
2

В этом случае я работаю над 2D-игрой. В этой игре мне нужно немного ракетных типов, падающих с неба, как бомбардировщик. Каждый тип ракеты, при столкновении с моим персонажем, причиняет определенное количество повреждений в зависимости от типа ракеты.Должен ли я избегать использования «Switch»?

Что мне делать?

  • Вариант 1: создать единый класс Missile, который содержит переменную со своим собственным типом ракет, и в цикле проверки на столкновения я использую переключатель, чтобы решить ущерб.

  • Вариант 2: создать несколько классов, затем сделать такое же количество циклов проверки столкновений ракет, избегая использования переключателя, зная в каждом цикле повреждение.

  • Вариант 3: создать единый контрольный цикл, со всеми ракетами, а также использовать наследс- сделать distintions между ракетами

  • Вариантом 4: Не за исключение типа ракетного, вместо инициализации ракет с их повреждениями и другими многие переменные, которые будут одинаковыми для одного и того же типа ракеты (отходы памяти)

И если вариант 3 не существует, вариант 1 или 2?

Благодаря

+0

Почему бы и нет? Это часть языка. Просто будьте осторожны и не забывайте о перерывах. – Jiminion

+0

Если есть несколько значений, которые различаются между типами, а поведение в остальном одинаково, я бы пошел с опцией 4, если это упростит код. – Troy

ответ

1

Ум, вариант 3 вполне возможен.

У вас есть класс ракеты с переменной урона. Все другие типы ракет расширяют этот класс. Таким образом, вы можете добавить другие поля информации по мере необходимости.

поэтому, когда вы проходите все классы ракет. вы можете отбросить их (ракета), а затем оценить эту переменную.

+0

Помните, что использовать экземпляр экземпляра подкласса. – Zerkz

0

Это действительно зависит от того, насколько различны для каждого типа ракеты, а также то, что вы планируете в будущем. Если все типы есть, вы не планируете добавлять больше типов, и единственное, что отличается между типами, это их количество урона, я бы пошел с переключателем. Однако, чтобы упростить расширение, а также моделировать разные типы поведения для каждого типа ракеты, выходящие за рамки только суммы ущерба, я бы создал базовый класс и наследовал новый класс для каждого типа, что позволило бы перегрузить методы, такие как getDamage() или updateMovement() для каждого ракетного типа.

0

Дайте каждому подклассу Missle метод, который вычисляет ущерб, принимая любые аргументы, которые ему нужны. Дайте каждой цели applyDamage (или только damage), который применяет указанный урон к цели.

Предпочитают полиморфизм переключателей.

Предпочитайте методы разбивки на небольшие задачи, связанные с целями.

Смежные вопросы