Программирование стратегических игр с DirectX 9.0
bda5893f

Тип атаки


Вы должны не только учесть объем наносимого боевой единицей ущерба, но также и подумать о том, каким именно способом этот ущерб будет наноситься. Будет ли подразделение выпускать во врага ракеты, или оно будет стрелять пулями, воспользуется лазером, или каким-либо другим оружием?

Есть несколько различных методов назначения боевым подразделениям типов атаки. Можно либо назначать параметры каждому подразделению индивидуально, либо создать несколько глобальных наборов параметров, и назначать их различным подразделениям. Я предпочитаю использовать глобальные параметры, поскольку это упрощает назначение одного и того же типа атаки нескольким различным подразделениям. Многие игры на рынке также следуют этим путем, поскольку он более эффективен. Взгляните, например, на следующую таблицу:



Название подразделения Легкий танк
Наносимый ущерб 100
Скорострельность 5
Косвенный ущерб от оружия 0
Изображение атаки laser.bmp
Мощность брони 100
Скорость передвижения 50

В данном примере легкий танк может причинить вражескому подразделению до 100 единиц ущерба, стреляет пять раз в минуту, для изображения оружия используется файл laser.bmp, оборудован броней мощностью 100 единиц и за один ход может переместиться на 50 единиц. Что, если теперь вы захотите создать средний танк, оборудованный тем же вооружением, но имеющий броню мощьностью 150 единиц и способный передвинуться за один ход только на 40 единиц? Конечно, вы можете заново задать все значения параметров атаки. В результате ряд параметров будет дублироваться и вы получите настоящую головную боль, если решите внести глобальные изменения в параметры вооружений.

Гораздо лучше сгруппировать параметры нападения в типы атаки. Взгляните на следующий пример:

Тип атаки лазер
Наносимый ущерб 100
Скорострельность 5
Косвенный ущерб от оружия 0
Изображение атаки laser.bmp
 
Название подразделения легкий танк
Тип атаки лазер
Мощность брони 100
Скорость передвижения 50
 
Название подразделения средний танк
Тип атаки лазер
Мощность брони 150
Скорость передвижения 40

В данном примере я создаю тип атаки с названием «лазер». Затем я создаю два подразделения, которые используют один и тот же тип атаки, но отличаются параметрами защиты и скоростью передвижения. Эта ситуация показана на рис. 8.5.


Рис. 8.5. Два типа подразделений используют один тип атаки

На рис. 8.5 оказаны легкий и средний танк, которые используют один и тот же тип атаки. Если вы используете данный метод, вам достаточн изменить тип атаки, и эти изменения будут действовать для всех использующих данный тип подразделений.


Переменная m_iType хранит число, соответствующее данному типу атаки. Это работает точно так же, как и для типов защиты.



Содержание раздела