Михаил Краснов - Графика DirectX в Delphi

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

Графика DirectX в Delphi: краткое содержание, описание и аннотация

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

Графика DirectX в Delphi — читать онлайн ознакомительный отрывок

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

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

Интервал:

Закладка:

Сделать

procedure TfrmDD.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if (Key = VK_ESCAPE) or (Key = VK_F12) then begin Close;

Exit;

end else

if Key = VK_LEFT then StepX := StepX + 1 else

if Key = VKJUGHT then StepX := StepX - I else

if Key = VK_UP then StepY := StepY + 1 else

if Key = VK_DOWN then StepY := StepY - 1;

// Ограничиваем углы поворота некоторыми пределами

if StepY < 1 then StepY := 1 else

if StepY > 3 then StepY := 3;

if StepX < -4 then StepX := -4 else

if StepX > 4 then StepX := 4;

// Копируем на поверхность истребителя новое изображение

with RotateBmp (wrkBitmap, 170, 135, arctan {StepX / StepY)) do begin

DDCopyBitmap (FDDSFighter, Handle, 0, 0, Width, Height);

Free end;

end;

При восстановлении поверхностей надо не просто восстановить содержимое поверхности истребителя, но и повернуть его образ соотвественно текущему положению:

function TfrmDD.RestoreAll : HRESULT;

var

hRet : HRESULT;

begin

hRet := FDDSPrimary._Restore;

if Succeeded (hRet) then begin

hRet := FDDSFighter._Restore;

if Failed (hRet) then begin

Result := hRet; Exit;

end;

// Поворот образа истребителя на текущий угол

with RotateBmp (wrkBitmap, 170, 135, arctan (StepX / StepY)) do begin

hRet := DDCopyBitmap (FDDSFighter, Handle, 0, 0, Width, Height);

Free end;

if Failed (hRet)

then ErrorOut(hRet, 'DDCopyBitmap');

hRet := FDDSImage3._Restore;

if Failed (hRet) then begin Result := hRet;

Exit;

end;

hRet := DDReLoadBitmap(FDDSImage3, starBmpS);

if Failed (hRet) then ErrorOut(hRet, 'DDReLoadBitmap');

hRet := FDDSImage2._Restore;

if Failed (hRet) then begin

Result := hRet;

Exit;

end;

hRet := DDReLoadBitmap(FDDSImage2, starBmp2);

if Failed (hRet) then ErrorOut(hRet, 'DDReLoadBitmap');

hRet := FDDSImagel._Restore;

if Failed (hRet) then begin

Result := hRet;

Exit;

end;

hRet := DDReLoadBitmap(FDDSImage1, starBmpl);

if Failed (hRet)

then ErrorOut(hRet, 'DDReLoadBitmap');

Result := DD_OK

end else Result := hRet;

end;

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

Игра "Меткий стрелок"

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

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

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

Чудовища мечутся по экрану, отталкиваясь друг от друга и от границ окна (предел нижней границы области перемещений монстров чуть выше нижней границы окна).

Несмотря на свой ужасный вид, монстры вполне безобидны и не приносят никому никакого вреда.

В игре присутствует два вида чудовищ, после попадания в монстра пули на месте трагедии остается огненный сполох (рис. 5.2).

Данный пример иллюстрирует ваше умение создать в принципе несложную игру без - фото 29

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

Код построен на основе примера из предыдущей главы с проверкой столкновений. Класс TBaseSprite является базовым для других классов спрайтов. Следуя логике предыдущих примеров, каждый объект имеет собственную поверхность:

type

TBaseSprite = class

FSpriteSurface г IDirectDrawSurface?; // Поверхность

PosX, PosY : Integer; // Позиция

SpriteWidth : Integer; // Размеры

SpriteHeight. : Integer;

function GetRect : TRect; // Охватывающий прямоугольник

procedure Show; virtual; abstract; // Вывод private

rcRect : TRect; // Прямоугольник кадра

end;

Фон загружается из отдельного растра, все остальные образы берутся из компонентов класса Timage (рис. 5.3).

Классы воина монстров и пуль являются дочерними базового класса type TWarrior - фото 30

Классы воина, монстров и пуль являются дочерними базового класса:

type

TWarrior = class (TBaseSprite) // Класс воина

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

Интервал:

Закладка:

Сделать

Похожие книги на «Графика DirectX в Delphi»

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


Отзывы о книге «Графика DirectX в Delphi»

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

x