Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Проигрывание звука, передвижение картинок и проверка их столкновения в DelphiX

Delphi , Графика и Игры , DirectX и DelphiX

Проигрывание звука, передвижение картинок и проверка их столкновения в DelphiX

Палестинский филиал WESTWOOD впервые в мире реализовал первый уровень игры "RED ALERT 2" (взятие Пентагона) в полном 3D и максимальным уровнем реализма... Сообщается о незначительных (около 50 000) жертвах среди бета-тестеров...

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

Это фон(он нарисован в Fireworks):

А это тарелка(нарисована там же):

Если вы не хотите рисовать сами, вы можете скачать мой вариант

Итак, приступим к работе

Цель этого занятия - научится проигрывать звук, передвигать картинки и проверять их столкновения. Для проверки столкновений понадобится третий спрайт, я нарисую стенку.

Теперь я уже не буду объяснять, как вывести стенку на экран. Я выведу её с координатами "400,400.0"

Все, можно пристурать к анимированию. В описание класса Ttarelka, перед "Public" надо поставить такую строку:


procedure DoMove(MoveCount: Integer); override;

Теперь описание класса должно выглядеть так:


Ttarelka = class(TImageSprite)
  procedure DoMove(MoveCount: Integer); override;
public
  constructor Create(AParent: TSprite); override;
end;

Теперь эту процедуру надо ПРОписать. Сразу после трех конструкторов пишем:


procedure Ttarelka.DoMove(MoveCount: Integer);
begin
  inherited DoMove(MoveCount);
  Collision;
  X:=X+1;
  Y:=Y+1;
end;

Разбираем: изменяться тут будут только большие "X" и "Y" - координаты спрайтов, "+1" - коэффициент изменения, берется от фонаря (или так, как задумал).

Запускаем и видим тарелку, летящую по диагонали, налетающую на стенку и летящую дальше!

Теперь думаем: зачем тут стенка? Обычно через стенки не летают, о них разбиваются. Начинаем писать проверку столкновений. Там же, где описывали doMove(перед "Public") пишем:


procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;

Теперь описание класса "Ttarelka" должно быть таким:


Ttarelka = class(TImageSprite)
  procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
  procedure DoMove(MCount: Integer); override;
public
  constructor Create(AParent: TSprite); override;
end;

Теперь ПРОписываем, после прописывания процедуры doMove:


procedure Ttarelka.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
  if Sprite is Twall then
    dead;
end;

Запускаем и видим, как тарелка наскакивает на стену и разбивается!

Только скучно как-то! Полетела, разбилась и все! Сделаем так, чтобы спрайт тарелки создавался по щелчку мыши (и заодно увидим, что процедура, написанная для одного спрайта действует и для всех его копий). В "Событиях"(Events) объекта DXDraw создаем обработчик onClick и пишем туда:


Ttarelka.create(SpriteEngine.Engine);

Заодно убираем эту процедуру из onFormCreate.

Ну все бы хорошо, ещё бы было этакое "БУМ!" когда тарелка разбивается!

Ставим на форму DXWaveList и DXSound. В свойства "DXSound" вэйв-листа выбираем "DXSound1" и переименовываем сам DXWaveList1 в DXWaveList. В Items'ax создаем новый, называем его "boom" и ставим в свойстве "wave" звук. Теперь в процедуру "doCollision" добавляем:


Form1.DXWaveList.Items.Find('boom').Play(False);

Теперь процедура doCollision выгдядит так:


procedure Ttarelka.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
  if Sprite is Twall then
  begin
    Form1.DXWaveList.Items.Find('boom').Play(false);
    dead;
  end;
end;

Наслаждемся тем, что второй урок наконец закончен!

P.S. DXDraw на форме надо будет растянуть на весь экран.

P.P.S. У кого что-то не получилось, могут скачать готовую программу

Кому сильно охота хотя бы немного посмотреть настоящие возможности ДельфИкса, те могут скачать игру, полностью написанную на ДельфИксе, причем написанную не кем-то особо крутым, а автором сайта http://instrumentari.narod.ru (игра на двоих). а здесь лежат исходники (только для Delphi 6.0)

Статья Проигрывание звука, передвижение картинок и проверка их столкновения в DelphiX раздела Графика и Игры DirectX и DelphiX может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


:: 2011-04-14 22:54:43 :: re:Проигрывание звука, передвижение картинок и проверка их столкновения в DelphiX

пользователь: Роман .

Спасибо! Буду теперь
заходить на этот сайт
почаще


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: DirectX и DelphiX ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
19.04.2024 18:07:50/0.067039966583252/0