📄 main.~pas
字号:
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, ExtCtrls, jpeg, StdCtrls;
type tblock=record
strx,stry:byte;
kind:byte;
end;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
game1: TMenuItem;
start1: TMenuItem;
exit1: TMenuItem;
Image1: TImage;
Image2: TImage;
Image3: TImage;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
Label1: TLabel;
Label2: TLabel;
MainMenu2: TMainMenu;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
procedure start1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure exit1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
private
map:array [1..10,1..10] of byte;
maplx,maply:byte;
block:array [1..20] of tblock;
doorx1,doory1,doorx2,doory2:byte;
fk:array[1..4] of tbitmap;
back:tbitmap;
select:byte;
mouseoldx,mouseoldy:integer;
procedure drawmap(maplx,maply,count:byte);
procedure moveright(select:byte);
procedure moveleft(select:byte);
procedure movedown(select:byte);
procedure moveup(select:byte);
{ Private declarations }
public
levl:byte;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses level, about;
{$R *.DFM}
procedure tform1.moveright(select:byte);
begin
case block[select].kind of
1: if (block[select].strx<(maplx-1)) and (map[block[select].strx+2,block[select].stry]=0)
and (map[block[select].strx+2,block[select].stry+1]=0)
then
begin
map[block[select].strx,block[select].stry]:=0;
map[block[select].strx,block[select].stry+1]:=0;
map[block[select].strx+2,block[select].stry]:=select;
map[block[select].strx+2,block[select].stry+1]:=select;
image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,back);
image1.canvas.draw(block[select].strx*40-39,(block[select].stry+1)*40-39,back);
block[select].strx:=block[select].strx+1;
image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[1]);
end;
2:if (block[select].strx<maplx) and (map[block[select].strx+1,block[select].stry]=0)
and (map[block[select].strx+1,block[select].stry+1]=0)
then
begin
map[block[select].strx,block[select].stry]:=0;
map[block[select].strx,block[select].stry+1]:=0;
map[block[select].strx+1,block[select].stry]:=select;
map[block[select].strx+1,block[select].stry+1]:=select;
image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,back);
image1.canvas.draw(block[select].strx*40-39,(block[select].stry+1)*40-39,back);
block[select].strx:=block[select].strx+1;
image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[2]);
end;
3:if (block[select].strx<maplx) and (map[block[select].strx+1,block[select].stry]=0)
then
begin
map[block[select].strx,block[select].stry]:=0;
map[block[select].strx+1,block[select].stry]:=select;
image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,back);
block[select].strx:=block[select].strx+1;
image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[3]);
end;
4:if (block[select].strx<(maplx-1)) and (map[block[select].strx+2,block[select].stry]=0)
then
begin
map[block[select].strx,block[select].stry]:=0;
map[block[select].strx+2,block[select].stry]:=select;
image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,back);
block[select].strx:=block[select].strx+1;
image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[4]);
end;
end;
end;
procedure tform1.moveleft(select:byte);
begin
case block[select].kind of
1: if (block[select].strx>1) and (map[block[select].strx-1,block[select].stry]=0)
and (map[block[select].strx-1,block[select].stry+1]=0)
then
begin
map[block[select].strx+1,block[select].stry]:=0;
map[block[select].strx+1,block[select].stry+1]:=0;
map[block[select].strx-1,block[select].stry]:=select;
map[block[select].strx-1,block[select].stry+1]:=select;
image1.Canvas.Draw((block[select].strx+1)*40-39,block[select].stry*40-39,back);
image1.canvas.draw((block[select].strx+1)*40-39,(block[select].stry+1)*40-39,back);
block[select].strx:=block[select].strx-1;
image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[1]);
end;
2:if (block[select].strx>1) and (map[block[select].strx-1,block[select].stry]=0)
and (map[block[select].strx-1,block[select].stry+1]=0)
then
begin
map[block[select].strx,block[select].stry]:=0;
map[block[select].strx,block[select].stry+1]:=0;
map[block[select].strx-1,block[select].stry]:=select;
map[block[select].strx-1,block[select].stry+1]:=select;
image1.Canvas.Draw((block[select].strx)*40-39,block[select].stry*40-39,back);
image1.canvas.draw((block[select].strx)*40-39,(block[select].stry+1)*40-39,back);
block[select].strx:=block[select].strx-1;
image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[2]);
end;
3:if (block[select].strx>1) and (map[block[select].strx-1,block[select].stry]=0)
then
begin
map[block[select].strx,block[select].stry]:=0;
map[block[select].strx-1,block[select].stry]:=select;
image1.Canvas.Draw((block[select].strx)*40-39,block[select].stry*40-39,back);
block[select].strx:=block[select].strx-1;
image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[3]);
end;
4:if (block[select].strx>1) and (map[block[select].strx-1,block[select].stry]=0)
then
begin
map[block[select].strx+1,block[select].stry]:=0;
map[block[select].strx-1,block[select].stry]:=select;
image1.canvas.draw((block[select].strx+1)*40-39,block[select].stry*40-39,back);
block[select].strx:=block[select].strx-1;
image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[4]);
end;
end;
end;
procedure tform1.movedown(select:byte);
begin
case block[select].kind of
1: if (block[select].stry<(maply-1)) and (map[block[select].strx,block[select].stry+2]=0)
and (map[block[select].strx+1,block[select].stry+2]=0)
then
begin
map[block[select].strx,block[select].stry]:=0;
map[block[select].strx+1,block[select].stry]:=0;
map[block[select].strx,block[select].stry+2]:=select;
map[block[select].strx+1,block[select].stry+2]:=select;
image1.canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,back);
image1.canvas.draw((block[select].strx+1)*40-39,block[select].stry*40-39,back);
block[select].stry:=block[select].stry+1;
image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[1]);
end;
2:if (block[select].stry<(maply-1)) and (map[block[select].strx,block[select].stry+2]=0)
then
begin
map[block[select].strx,block[select].stry]:=0;
map[block[select].strx,block[select].stry+2]:=select;
image1.canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,back);
block[select].stry:=block[select].stry+1;
image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[2]);
end;
3:if (block[select].stry<maply) and (map[block[select].strx,block[select].stry+1]=0)
then
begin
map[block[select].strx,block[select].stry]:=0;
map[block[select].strx,block[select].stry+1]:=select;
image1.canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,back);
block[select].stry:=block[select].stry+1;
image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[3]);
end;
4:if (block[select].stry<maply) and (map[block[select].strx,block[select].stry+1]=0)
and (map[block[select].strx+1,block[select].stry+1]=0)
then
begin
map[block[select].strx,block[select].stry]:=0;
map[block[select].strx+1,block[select].stry]:=0;
map[block[select].strx,block[select].stry+1]:=select;
map[block[select].strx+1,block[select].stry+1]:=select;
image1.canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,back);
image1.canvas.draw((block[select].strx+1)*40-39,block[select].stry*40-39,back);
block[select].stry:=block[select].stry+1;
image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[4]);
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -