Стэн Трухильо - Графика для Windows средствами DirectDraw

Здесь есть возможность читать онлайн «Стэн Трухильо - Графика для Windows средствами DirectDraw» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Графика для Windows средствами DirectDraw: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Графика для Windows средствами DirectDraw»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Графика для Windows средствами DirectDraw — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Графика для Windows средствами DirectDraw», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать
Рис 94 Программа Bumper Восемь спрайтов показанных на рисунке представлены - фото 27

Рис. 9.4. Программа Bumper

Восемь спрайтов, показанных на рисунке, представлены четырьмя разными поверхностями — по каждой поверхности создаются два спрайта. Исходные векторы направления, по которым перемещаются спрайты, определяются случайным образом. В начале своей работы программа «раскручивает» генератор случайных чисел, чтобы результаты ее работы не были всегда одинаковыми. При нажатии клавиши пробела векторы направления пересчитываются заново. Код программы Bumper рассматривается в следующих разделах.

Класс BumperWin

Программа Bumper, как и все остальные программы в этой книге, построена на основе базового класса DirectDrawWin. Производный от него класс BumperWinопределяется так:

class BumperWin : public DirectDrawWin {

public:

BumperWin();

protected:

//{{AFX_MSG(BumperWin)

afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);

afx_msg void OnDestroy();

//}}

AFX_MSG DECLARE_MESSAGE_MAP()

private:

int SelectDriver();

int SelectInitialDisplayMode();

BOOL CreateCustomSurfaces();

void DrawScene();

void RestoreSurfaces();

BOOL SpritesCollide(Sprite* s1, Sprite* s2);

BOOL SpritesCollideRect(Sprite* s1, Sprite* s2);

BOOL SpritesCollidePixel(Sprite* s1, Sprite* s2);

private:

Sprite* sprite[MAX_SPRITES];

int nsprites;

LPDIRECTDRAWSURFACE text;

};

В нем объявляются два обработчика сообщений. Функция OnKeyDown()обрабатывает нажатия клавиш, а функция OnDestroy()освобождает спрайты в конце работы программы.

Функции SelectDriver(), SelectInitialDisplayMode(), CreateCustomSurfaces(), DrawScene()и RestoreSurfaces()наследуются от класса DirectDrawWin. Вскоре мы подробно рассмотрим каждую из этих функций. Функции SpritesCollide(), SpritesCollideRect() и SpritesCollidePixel()совпадают с одноименными функциями, описанными выше, однако на этот раз они принадлежат классу BumperWin. Поскольку эти функции уже рассматривались, мы не будем обсуждать их снова.

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

Инициализация приложения

При запуске программы Bumper прежде всего вызывается функция SelectDriver(). Чтобы добиться максимальной гибкости, при наличии нескольких драйверов DirectDraw программа Bumper выводит меню. Функция SelectDriver()выглядит так:

int BumperWin::SelectDriver() {

int numdrivers=GetNumDrivers();

if (numdrivers==1) return 0;

CArray drivers;

for (int i=0;i

LPSTR desc, name;

GetDriverInfo(i, 0, &desc, &name);

drivers.Add(desc);

}

DriverDialog dialog;

dialog.SetContents(&drivers);

if (dialog.DoModal()!=IDOK) return -1;

return dialog.GetSelection();

}

С помощью класса DriverDialogпрограмма выводит меню со списком драйверов и использует драйвер, выбранный пользователем. Наши функции проверки столкновений предназначены только для 8-битных поверхностей, поэтому драйверы, не поддерживающие 8-битных видеорежимов (скажем, драйверы 3Dfx), в этой программе не работают. Следовательно, функция SelectInitialDisplayMode()должна правильно реагировать на выбор такого драйвера.

Функция SelectInitialDisplayMode()вызывается после функции SelectDriver(), но перед созданием поверхностей. Функция выглядит так:

int BumperWin::SelectInitialDisplayMode() {

DWORD curdepth=GetDisplayDepth();

int i, nummodes=GetNumDisplayModes();

DWORD w,h,d;

if (curdepth!=desireddepth) ddraw2->SetDisplayMode(640, 480, curdepth, 0, 0);

for (i=0;i

GetDisplayModeDimensions(i, w, h, d);

if (w==desiredwidth && h==desiredheight && d==desireddepth) return i;

}

ddraw2->RestoreDisplayMode();

ddraw2->Release(), ddraw2=0;

AfxMessageBox("Can't find 8-bit mode on this device");

return -1;

}

Функция SelectInitialDisplayMode()ищет конкретный видеорежим 640x480x8. Если этот режим не найден, она выводит сообщение и возвращает –1, говоря тем самым классу DirectDrawWinо том, что приложение следует завершить. Если режим будет найден, функция возвращает его индекс. По этому индексу класс DirectDrawWinузнает о том, какой видеорежим следует активизировать.

Если функция SelectInitialDisplayMode()находит нужный видеорежим, класс DirectDrawWinвызывает функцию CreateCustomSurfaces(). Она создает поверхности наших восьми спрайтов, а также поверхность меню. Функция CreateCustomSurfaces()приведена в листинге 9.3.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Графика для Windows средствами DirectDraw»

Представляем Вашему вниманию похожие книги на «Графика для Windows средствами DirectDraw» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Графика для Windows средствами DirectDraw»

Обсуждение, отзывы о книге «Графика для Windows средствами DirectDraw» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x