Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2015, 13:27   #1
12Slavik
Новичок
Джуниор
 
Регистрация: 08.06.2015
Сообщений: 2
По умолчанию Программа при помощи DelphiX.

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

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DXClass, DXSprite, DXInput, DXDraws;

type
  TForm1 = class(TDXForm)
    DXDraw1: TDXDraw;
    DXImageList1: TDXImageList;
    DXInput1: TDXInput;
    DXSpriteEngine1: TDXSpriteEngine;
    DXTimer1: TDXTimer;
    DXImageList2: TDXImageList;
    DXTimer2: TDXTimer;
    DXImageList3: TDXImageList;
    DXTimer3: TDXTimer;
    procedure DXTimer1Timer(Sender: TObject; LagCount: Integer);
    procedure FormCreate(Sender: TObject);
    procedure DXTimer2Timer(Sender: TObject; LagCount: Integer);
    procedure DXTimer3Timer(Sender: TObject; LagCount: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
Type
TPlayer=class(TImageSprite)
Protected
procedure DoMove(MoveCount: integer); override;
public
constructor Create(AParent: TSprite); override;
Destructor Destroy; override;
end;

TPricel=class(TImageSprite)
Protected
procedure DoMove(MoveCount: integer); override;
public
constructor Create(AParent: TSprite); override;
Destructor Destroy; override;
end;

TSmile=class(TImageSprite)
Protected
procedure DoMove(MoveCount: integer); override;
public
constructor Create(AParent: TSprite); override;
Destructor Destroy; override;
end;

{ TPlayer }

constructor TPlayer.Create(AParent: TSprite);
begin
  inherited
Create(AParent);
Image:=Form1.DXImageList1.Items.Find('player'); 
//çàíîñèì êàðòèíêó
Width:=Image.Width;
Height:=Image.Height;
end;

destructor TPlayer.Destroy;
begin
  inherited
Destroy;
end;

procedure TPlayer.DoMove(MoveCount: integer);
begin
  inherited;
if isLeft in Form1.DXInput1.States then x:=x-1;
if isRight in Form1.DXInput1.States then x:=x+1;
if isUp in Form1.DXInput1.States then y:=y-1;
if isDown in Form1.DXInput1.States then y:=y+1;
end;

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
DXInput1.Update;
DXSpriteEngine1.Move(LagCount);
DXSpriteEngine1.Dead;
DXDraw1.Surface.Fill(0);
DXSpriteEngine1.Draw;
DXDraw1.Flip;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
With TPlayer.Create(DXSpriteEngine1.Engine) do
  begin
   Image:=Form1.DXImageList1.Items.Find('player'); 
//çàíîñèì êàðòèíêó
   x:=35;
   y:=45;
   Width:=Image.Width;
   Height:=Image.Height;
  end;
With TPricel.Create(DXSpriteEngine1.Engine) do
  begin
   Image:=Form1.DXImageList2.Items.Find('pricel');
   x:=60;
   y:=35;
   Width:=Image.Width;
   Height:=Image.Height;
  end;
With TSmile.Create(DXSpriteEngine1.Engine) do
  begin
   Image:=Form1.DXImageList3.Items.Find('smile');
   x:=1;
   y:=1;
   Width:=Image.Width;
   Height:=Image.Height;
  end;
end;

{ TPricel }

constructor TPricel.Create(AParent: TSprite);
begin
  inherited
Create(AParent);
Image:=Form1.DXImageList2.Items.Find('pricel');
Width:=Image.Width;
Height:=Image.Height;
end;

destructor TPricel.Destroy;
begin
  inherited
Destroy;
end;

procedure TPricel.DoMove(MoveCount: integer);
begin
  inherited;
if isLeft in Form1.DXInput1.States then x:=x-1;
if isRight in Form1.DXInput1.States then x:=x+1;
if isUp in Form1.DXInput1.States then y:=y-1;
if isDown in Form1.DXInput1.States then y:=y+1;
end;

procedure TForm1.DXTimer2Timer(Sender: TObject; LagCount: Integer);
begin
DXInput1.Update;
DXSpriteEngine1.Move(LagCount);
DXSpriteEngine1.Dead;
DXDraw1.Surface.Fill(0);
DXSpriteEngine1.Draw;
DXDraw1.Flip;
end;

{ TSmile }

constructor TSmile.Create(AParent: TSprite);
begin
  inherited
Create(AParent);
Image:=Form1.DXImageList3.Items.Find('smile');
Width:=Image.Width;
Height:=Image.Height;
end;

destructor TSmile.Destroy;
begin
  inherited
Destroy;
end;

procedure TSmile.DoMove(MoveCount: integer);
begin
  inherited;
if isLeft in Form1.DXInput1.States then x:=x-1;
if isRight in Form1.DXInput1.States then x:=x+1;
if isUp in Form1.DXInput1.States then y:=y-1;
if isDown in Form1.DXInput1.States then y:=y+1;
end;

procedure TForm1.DXTimer3Timer(Sender: TObject; LagCount: Integer);
begin
DXInput1.Update;
DXSpriteEngine1.Move(LagCount);
DXSpriteEngine1.Dead;
DXDraw1.Surface.Fill(0);
DXSpriteEngine1.Draw;
DXDraw1.Flip;
end;

end.

Последний раз редактировалось Stilet; 08.06.2015 в 13:37.
12Slavik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Последовательное заполнение ячеек при помощи диалоговых окон, при определенном значении в определенной ячейке Inna2708 Microsoft Office Excel 5 10.11.2014 01:15
Иморт данных из SQL в Excel при помощи QueryTable VBS, Иморт данных из SQL в Excel при помощи QueryTable Valdocco Microsoft Office Excel 1 16.07.2009 21:50
Проблема при открытии базы при помощи ADO SlavaSH БД в Delphi 21 30.06.2009 16:51
Центрирование в при помощи <td>, <div>, <p> Van'Denis HTML и CSS 8 07.05.2009 04:58