Показать сообщение отдельно
Старый 18.10.2018, 19:37
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 12  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Например так: (Сущности и их свойства)
Тип атаки: id.
Атака: id, тип, damage, cooldown
Юнит: id, name, attack1, attack2

Код AS3:
// Заполняем таблички.
// Типы атак:
attackTypes.add(1); // Физическая.
attackTypes.add(2); // Огненная.
attackTypes.add(3); // Ледяная.
 
// Атаки:
attacks.add(1, 1, 100, 2); // Физическая атака, 100 урона, 2 сек кд.
attacks.add(2, 1, 500, 10); // Физическая атака, 500 урона, 10 сек кд.
attacks.add(3, 2, 2000, 100); // Огненная атака, 2000 урона, 100 сек кд.
 
// Юниты:
units.add(1, "Goblin", 1, 0); // Гоблин, может лупить физ уроном.
units.add(2, "Mage", 3, 0); // Маг, может лупить фаерболами.
units.add(3, "Paladin", 2, 3); // Паладин, может лупить сильным физ уроном и ещё параллельно кастовать фаерболы.
units.add(4, "Rabbit", 0, 0); // Безобидный кролик.
Обрати внимание, что из этих данных мы всё обо всех знаем. В коде нам не надо пилить никаких дополнительный условий сравнения типов, наследников и т.п.

Примерно такая структура в игре Warcraft 3. У них один юнит может иметь не более 2 атак. Ещё, id типа атаки можно захардкодить, так-как он не будет меняться от проекта к проекту. Это очень удобно:
Код AS3:
attackTypes.add(AttackType.PHYSICS); // Физическая.
attackTypes.add(AttackType.FIRE); // Огненная.
attackTypes.add(AttackType.ICE); // Ледяная.
Потом, в коде движка оперировать константами, а не волшебными числами, в формулах расчёта урона и т.п. Хороший пример, как некоторые данные зашиты в движок (ID Типа атаки). Движок просто берёт эту структуру и просчитывает её. Всё что ему нужно знать есть в табличках. Структуру данных ты можешь взять откуда угодно, захардкодить, загрузить с диска или из сети. Юниты другие, игра другая, а код тот-же.
__________________
Дети не должны знать о своих родителях