Далее: кликая на форму в свободное место и Object Inspector в закладке Events находим OnCreate. Создаём процедуру и пишем в ней:

with TBOSS.Create(Dxspriteengine1.Engine) do
begin
PixelCheck := True; // для столкновения прощитывает каждую точку
Image := form1.dxImageList1.Items.Find('BOSS'); // ищем спрайт в ImageList`е
x:=350; // x координаты 
y:=10; // y координаты
Width := Image.Width; //ширина равна ширине спрайта 
Height := Image.Height; //высота равна высоте спрайта
end;

with TPlayerSprite.Create(Dxspriteengine1.Engine) do
begin
PixelCheck := True;
Image := form1.dxImageList1.Items.Find('Pla');
x:=350;
y:=500;
Width := Image.Width;
Height := Image.Height;
end;

При создании формы мы создаём все
статические объекты сразу. Ну что теперь можно перейти к процедурам, и их заполнению :).
Начнём с процедур босса. Они самые простые.

Пред implementation в var добавить переменную i:boolean; //переменная движения в сторону BOSA
и в свойствах формы OnCreate добавить: I:=true;

Только после этого пишем следующие: 

Procedure TBoSS.DoMove(MoveCount: Integer);
begin
inherited DoMove(MoveCount);
if x>= 700 then I:= true; // когда X>= то туда >>>
if x<= 0 then I:= false; // когда X<= то туда <<<
if i= true then X := X+10;
if i= false then X := X-10;
Collision;
end;

constructor TBOSS.Create(AParent: TSprite); //Сдесь всё понятно
begin
inherited Create(AParent);
Image := form1.DXImageList1.Items.Find('BOSS');
Width := Image.Width;
Height := Image.Height;
end;

destructor TBOSS.Destroy; //тут тоже
begin
inherited Destroy;
end;

procedure TBoss.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
if Sprite is Tplayerfa then dead; // если спрайт сталкивается с Tplayerfa то умирает
Collision; // Включаем столкновение
end;

ФУ!! Ну вроде с одним объектом разобрались переходим к игроку тут одна процедура 

Procedure TPlayerSprite.DoMove(MoveCount: Integer);
begin
inherited DoMove(MoveCount);
if isLeft in Form1.DXInput1.States then x:=x-5; // при нажатии двигаем объект в лево
if isRight in Form1.DXInput1.States then X:=x+5; // при нажатии двигаем объект вправо
if isup in Form1.DXInput1.States then // при нажатие вверх создаётся наша пулька
begin
with TPlayerFa.Create(Engine) do
begin
PixelCheck := True;
Image := form1.dxImageList1.Items.Find('Pula');
X := Self.X+Self.Width -40; //Чтобы пуля создавалась около нашего обьекта 
Y := Self.Y+Self.Height -80 ; //Чтобы пуля создавалась около нашего обьекта
Width := Image.Width;
Height := Image.Height;
end;
end;
if y >= form1.DXDraw1.SurfaceHeight-image.Height then //непускаем 
y := form1.DXDraw1.SurfaceHeight-image.Height; //объект 
if x >= form1.DXDraw1.SurfaceWidth -image.Width then //за границы
x := form1.DXDraw1.SurfaceWidth -image.Width; // формы
if y <= 0 then
y := 1;
if x <= 0 then
x:=1;
end;

И наконец последнее это сама пуля и её процедуры:

Procedure TPlayerFa.DoMove(MoveCount: Integer); 
begin
inherited DoMove(MoveCount);
y:=y-3; //проще некуда неправда ли
end;

procedure TPlayerFa.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
if Sprite is TBoss then dead;
Collision;
end;

И на последок для удобства в Object Inspector в закладке Events находим OnKeyDown кликаем и пишем:

if Key=VK_ESCAPE then application.Terminate;

При вставки этого кода по нажатию клавиши ESC выходим из приложения.
Вот и всё это одно из самых примитивных игр на DelphiX но ты её сделал.

Вот вам Д/З для улучшения знаний:

  1. Сделайте так, чтобы при уходе патрона из зоны видимости он уничтожался 
  2. Сделайте чтобы патроны стреляли очередями,
    а не кучами как у меня

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

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии