📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,GameMap, StdCtrls, GameCode;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
OpenDialog1: TOpenDialog;
Button3: TButton;
Label1: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1 : TForm1 ;
FileName : string ;
T1 : TMapInfo;
p1,p2 : Point ;
MouseX,MouseY : Integer ;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute=true then
FileName:=OpenDialog1.FileName;
ShowMessage(FileName);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
hw:HWND;
begin
T1.ReadMap(FileName);
Canvas.Pen.Style:=TPenStyle(0);
Canvas.MoveTo(0,0);
hw:=Form1.Handle;
Perform(WM_Paint,GetDC(hw),0);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
T1:=TMapInfo.Create;
end;
procedure TForm1.FormPaint(Sender: TObject);
var
i,j:Integer;
begin
for j:=1 to T1.GetYMax do
begin
for i:=1 to T1.GetXMax do
begin
if T1.TestPoint(i,j)=false then
begin
Canvas.Pixels[i,j]:=clBlack;
end;
end;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
p1.x:=0;
p1.y:=0;
p2.x:=0;
p2.y:=0;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
rp: TTmpPnt;
begin
if (X<1) or (X>T1.GetXMax) or (Y<1) or (X>T1.GetYMax) then
begin
DBGOut('x=%d,y=%d,mx=%d,my=%d',[X,Y,T1.GetXMax,T1.GetYMax]);
ShowMessage('点不在地图上');
exit;
end;
if (p1.x=0) and (p1.y=0) then
begin
p1.x:=X;
p1.y:=Y;
exit;
end;
if (p2.x=0) and (p2.y=0) then
begin
p2.x:=X;
p2.y:=Y;
end;
RP:=TTmpPnt.Create;
if T1.FindRoad(p1,p2,RP)=false then
ShowMessage('无法到达');
while RP.GetSize<>0 do
begin
sleep(20);
Canvas.Pixels[RP.GetTail.x,RP.GetTail.y]:=clRed;
end;
p1.x:=0;
p2.x:=0;
p1.y:=0;
p2.y:=0;
RP.Free;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
s1:string;
begin
MouseX:=X;
MouseY:=Y;
s1:=InttoStr(MouseX)+','+IntToStr(MouseY);
Label1.Caption:=s1;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -