Кароче пацаны я всё решил с картой
даю исходник
каму интересно канэшна
unit map;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DXDraws, DXSprite, DXClass;
const Mapa : array [1..5,1..11] of integer=(
(4,5,4,5,3,5,3,4,5,3,5),
(4,5,4,5,3,5,3,4,5,3,5),
(4,5,4,5,3,5,3,4,5,3,5),
(4,5,4,5,3,5,3,4,5,3,5),
(2,5,4,5,3,5,3,4,5,3,5));
type
TForm1 = class(TDXForm)
DXDraw1: TDXDraw;
DXSpriteEngine1: TDXSpriteEngine;
DXImageList1: TDXImageList;
DXTimer1: TDXTimer;
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DXTimer1Timer(Sender: TObject; LagCount: Integer);
procedure DXDraw1Finalize(Sender: TObject);
procedure DXDraw1Initialize(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i,j:integer;
implementation
{$R *.DFM}
//расписываем классы
type
TKirp = class(TImageSprite) //Класс игрока
protected
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_ESCAPE then application.Terminate;
end;
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
if not DXDraw1.CanDraw then application.Terminate;
DXSpriteEngine1.Move(LagCount);
DXSpriteEngine1.Dead;
DXDraw1.Surface.Fill(0);
DXSpriteEngine1.Draw;
with DXDraw1.Surface.Canvas do
begin
Brush.Style := bsClear;
Font.Color := clwhite;
Font.Size := 8;
Textout( 10, 0, 'FPS: '+inttostr( DXTimer1.FrameRate ) );
Textout( 10, 10, 'Спрайтов: '+inttostr(DXSpriteEngine1.Engine.AllCount));
Release;
end;
DXDraw1.Flip;
end;
procedure TForm1.DXDraw1Finalize(Sender: TObject);
begin
DXTimer1.Enabled := False;
end;
procedure TForm1.DXDraw1Initialize(Sender: TObject);
begin
DXTimer1.Enabled := True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
For j:= 1 to 5 do
For i:= 1 to 11 do
If Mapa[j,i]>2 then
with TKirp.Create(DXSpriteEngine1.Engine) do
begin
if Mapa[j,i]=3 then Image:=DXImageList1.Items.Find('kirp1');
if Mapa[j,i]=4 then Image:=DXImageList1.Items.Find('kirp2');
if Mapa[j,i]=5 then Image:=DXImageList1.Items.Find('kirp3');
Collisioned := true;
x:=j*36+136;
y:=i*20+200;
Z := 0;
Tile := False;
end;
end;
end.