код

Функция IDirectInputDevice8::SetProperty()

Реализация буферизованного ввода достаточно проста — достаточно установить свойство устройства клавиатуры. Это осуществляется с помощью функции установки свойств. Вот как выглядит ее прототип:

HRESULT SetProperty(
REFGUID rguidProp,
LPCDIPROPHEADER pdiph
);

Буферизованный ввод с клавиатуры

Следующая часть функции может показаться вам странной, поскольку пока я еще не объяснил ее назначение. Дело в том, что для клавиатуры имеется два способа получения входных данных: непосредственный и буферизованный. Непосредственный ввод позволяет получить состояние клавиш на момент опроса.

Интерфейс IDirectInput8

Рабочей лошадкой DirectInput является интерфейс IDirectInput8. Это COM-объект, отвечающий за настройку среды ввода. После того, как вы создали объект DirectInput можно создавать устройства для объекта. Как же можно создать этот объект? С помощью следующего кода:

if(FAILED(hReturn = DirectInput8Create(
g_hInstance, DIRECTINPUT_VERSION,
IID_IDirectInput8, (VOID**)&pDI, NULL))) {

Обработка ожидающих подразделений

Первое действие представляет собой состояние «ничегонеделанья» или ожидания. Код для его обработки выглядит следующим образом:

ptrUnit->m_iCurStillFrame++;
if(ptrUnit->m_iCurStillFrame >=
ptrUnit->m_Animation->m_iNumStillFrames)
{
ptrUnit->m_iCurStillFrame = 0;
}
ptrUnit->m_iCurAnimFrame =
ptrUnit->m_Animation->m_iStartStillFrames +
(ptrUnit->m_iCurStillFrame * (UNITMANAGER_MAXOWNERS + 1));

Методы класса CUnitMovement

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

// Конструктор
CUnitMovement::CUnitMovement()
{
// Установка внутренних значений
vReset();
}
// Деструктор
CUnitMovement::~CUnitMovement()
{
}

Ускорение и торможение

Чтобы добавить сложности, я включил параметры, задающие ускорение и торможение. Ускорение определяет на сколько возрастает скорость подразделения за раунд игры, когда оно разгоняется. Торможение сообщает вам на сколько уменьшается подразделения за раунд игры, когда оно тормозит.

Методы класса CUnitOffense

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

// Конструктор
CUnitOffense::CUnitOffense()
{
// Установка внутренних переменных
vReset();
}
// Деструктор
CUnitOffense::~CUnitOffense()
{
}



RSS-материал