unit1.pas
来自「Delphi7编程80例(完全版)」· PAS 代码 · 共 1,476 行 · 第 1/3 页
PAS
1,476 行
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, ExtCtrls, Menus, StdCtrls, ComCtrls, ExtDlgs, jpeg;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
Newgame1: TMenuItem;
Exitgame1: TMenuItem;
Image1: TImage;
N1: TMenuItem;
OpenPictureDialog1: TOpenPictureDialog;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton10: TSpeedButton;
SpeedButton15: TSpeedButton;
Panel1: TPanel;
SpeedButton19: TSpeedButton;
SpeedButton14: TSpeedButton;
SpeedButton9: TSpeedButton;
SpeedButton8: TSpeedButton;
SpeedButton13: TSpeedButton;
SpeedButton18: TSpeedButton;
SpeedButton17: TSpeedButton;
SpeedButton12: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton11: TSpeedButton;
SpeedButton16: TSpeedButton;
StatusBar1: TStatusBar;
N2: TMenuItem;
N3: TMenuItem;
ColorDialog1: TColorDialog;
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
procedure SpeedButton9Click(Sender: TObject);
procedure SpeedButton10Click(Sender: TObject);
procedure SpeedButton11Click(Sender: TObject);
procedure SpeedButton12Click(Sender: TObject);
procedure SpeedButton13Click(Sender: TObject);
procedure SpeedButton14Click(Sender: TObject);
procedure SpeedButton15Click(Sender: TObject);
procedure SpeedButton16Click(Sender: TObject);
procedure SpeedButton17Click(Sender: TObject);
procedure SpeedButton18Click(Sender: TObject);
procedure SpeedButton19Click(Sender: TObject);
procedure Newgame1Click(Sender: TObject);
procedure Exitgame1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x,y:integer; //数字按钮移动的点坐标
vright,vleft,vdown,vup:boolean; //数字移动方向的判断
vright2left,vleft2right,vdown2up,vup2down:boolean; //数字移动方向的判断
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,
a13,a14,a15,a16,a17,a18,a19:integer; //19个数字
RanNums:integer; //随机数字
implementation
{$R *.DFM}
procedure TForm1.SpeedButton1Click(Sender: TObject);
procedure detect;
begin
//8个方向的初始值都是False
vright:=falsE;
vleft:=false;
vdown:=false;
vup:=falsE;
vright2left:=falsE;
vleft2right:=false;
vdown2up:=false;
vup2down:=falsE;
if(speedbutton1.left+48=Panel1.left)and(speedbutton1.top=Panel1.top) then
vright:=true; //按钮右移
if(speedbutton1.left-48=Panel1.left)and(speedbutton1.top=Panel1.top) then
vleft:=true; //按钮左移
if(speedbutton1.left=Panel1.left)and(speedbutton1.top-40=Panel1.top) then
vup:=true; //按钮上移
if(speedbutton1.left=Panel1.left)and(speedbutton1.top+40=Panel1.top) then
vdown:=true; //按钮下移
end;
begin
detect;
if(vright=true)and(vleft2right=false) then
begin
x:=speedbutton1.left;
y:=speedbutton1.top;
speedbutton1.left:=Panel1.left;
speedbutton1.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vright2left:=true;
end;
if(vleft=true)and(vright2left=false) then
begin
x:=speedbutton1.left;
y:=speedbutton1.top;
speedbutton1.left:=Panel1.left;
speedbutton1.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
end;
if(vup=true)and(vup2down=falsE) then
begin
x:=speedbutton1.left;
y:=speedbutton1.top;
speedbutton1.left:=Panel1.left;
speedbutton1.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vup2down:=true;
end;
if(vdown=true)and(vup2down=falsE) then
begin
x:=speedbutton1.left;
y:=speedbutton1.top;
speedbutton1.left:=Panel1.left;
speedbutton1.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vup2down:=false;
end;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
procedure detect;
begin
vright:=falsE;
vleft:=false;
vdown:=false;
vup:=falsE;
vright2left:=falsE;
vleft2right:=false;
vdown2up:=false;
vup2down:=falsE;
if(speedbutton2.left+48=Panel1.left)and(speedbutton2.top=Panel1.top) then
vright:=true;
if(speedbutton2.left-48=Panel1.left)and(speedbutton2.top=Panel1.top) then
vleft:=true;
if(speedbutton2.left=Panel1.left)and(speedbutton2.top-40=Panel1.top) then
vup:=true;
if(speedbutton2.left=Panel1.left)and(speedbutton2.top+40=Panel1.top) then
vdown:=true;
end;
begin
detect;
if(vright=true)and(vleft2right=false) then
begin
x:=speedbutton2.left;
y:=speedbutton2.top;
speedbutton2.left:=Panel1.left;
speedbutton2.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vright2left:=true;
end;
if(vleft=true)and(vright2left=false) then
begin
x:=speedbutton2.left;
y:=speedbutton2.top;
speedbutton2.left:=Panel1.left;
speedbutton2.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
end;
if(vup=true)and(vup2down=falsE) then
begin
x:=speedbutton2.left;
y:=speedbutton2.top;
speedbutton2.left:=Panel1.left;
speedbutton2.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vup2down:=true;
end;
if(vdown=true)and(vup2down=falsE) then
begin
x:=speedbutton2.left;
y:=speedbutton2.top;
speedbutton2.left:=Panel1.left;
speedbutton2.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vup2down:=false;
end;
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
procedure detect;
begin
vright:=falsE;
vleft:=false;
vdown:=false;
vup:=falsE;
vright2left:=falsE;
vleft2right:=false;
vdown2up:=false;
vup2down:=falsE;
if(speedbutton4.left+48=Panel1.left)and(speedbutton4.top=Panel1.top) then
vright:=true;
if(speedbutton4.left-48=Panel1.left)and(speedbutton4.top=Panel1.top) then
vleft:=true;
if(speedbutton4.left=Panel1.left)and(speedbutton4.top-40=Panel1.top) then
vup:=true;
if(speedbutton4.left=Panel1.left)and(speedbutton4.top+40=Panel1.top) then
vdown:=true;
end;
begin
detect;
if(vright=true)and(vleft2right=false) then
begin
x:=speedbutton4.left;
y:=speedbutton4.top;
speedbutton4.left:=Panel1.left;
speedbutton4.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vright2left:=true;
end;
if(vleft=true)and(vright2left=false) then
begin
x:=speedbutton4.left;
y:=speedbutton4.top;
speedbutton4.left:=Panel1.left;
speedbutton4.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
end;
if(vup=true)and(vup2down=falsE) then
begin
x:=speedbutton4.left;
y:=speedbutton4.top;
speedbutton4.left:=Panel1.left;
speedbutton4.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vup2down:=true;
end;
if(vdown=true)and(vup2down=falsE) then
begin
x:=speedbutton4.left;
y:=speedbutton4.top;
speedbutton4.left:=Panel1.left;
speedbutton4.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vup2down:=false;
end;
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
procedure detect;
begin
vright:=falsE;
vleft:=false;
vdown:=false;
vup:=falsE;
vright2left:=falsE;
vleft2right:=false;
vdown2up:=false;
vup2down:=falsE;
if(speedbutton3.left+48=Panel1.left)and(speedbutton3.top=Panel1.top) then
vright:=true;
if(speedbutton3.left-48=Panel1.left)and(speedbutton3.top=Panel1.top) then
vleft:=true;
if(speedbutton3.left=Panel1.left)and(speedbutton3.top-40=Panel1.top) then
vup:=true;
if(speedbutton3.left=Panel1.left)and(speedbutton3.top+40=Panel1.top) then
vdown:=true;
end;
begin
detect;
if(vright=true)and(vleft2right=false) then
begin
x:=speedbutton3.left;
y:=speedbutton3.top;
speedbutton3.left:=Panel1.left;
speedbutton3.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vright2left:=true;
end;
if(vleft=true)and(vright2left=false) then
begin
x:=speedbutton3.left;
y:=speedbutton3.top;
speedbutton3.left:=Panel1.left;
speedbutton3.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
end;
if(vup=true)and(vup2down=falsE) then
begin
x:=speedbutton3.left;
y:=speedbutton3.top;
speedbutton3.left:=Panel1.left;
speedbutton3.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vup2down:=true;
end;
if(vdown=true)and(vup2down=falsE) then
begin
x:=speedbutton3.left;
y:=speedbutton3.top;
speedbutton3.left:=Panel1.left;
speedbutton3.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vup2down:=false;
end;
end;
procedure TForm1.SpeedButton5Click(Sender: TObject);
procedure detect;
begin
vright:=falsE;
vleft:=false;
vdown:=false;
vup:=falsE;
vright2left:=falsE;
vleft2right:=false;
vdown2up:=false;
vup2down:=falsE;
if(speedbutton5.left+48=Panel1.left)and(speedbutton5.top=Panel1.top) then
vright:=true;
if(speedbutton5.left-48=Panel1.left)and(speedbutton5.top=Panel1.top) then
vleft:=true;
if(speedbutton5.left=Panel1.left)and(speedbutton5.top-40=Panel1.top) then
vup:=true;
if(speedbutton5.left=Panel1.left)and(speedbutton5.top+40=Panel1.top) then
vdown:=true;
end;
begin
detect;
if(vright=true)and(vleft2right=false) then
begin
x:=speedbutton5.left;
y:=speedbutton5.top;
speedbutton5.left:=Panel1.left;
speedbutton5.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vright2left:=true;
end;
if(vleft=true)and(vright2left=false) then
begin
x:=speedbutton5.left;
y:=speedbutton5.top;
speedbutton5.left:=Panel1.left;
speedbutton5.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
end;
if(vup=true)and(vup2down=falsE) then
begin
x:=speedbutton5.left;
y:=speedbutton5.top;
speedbutton5.left:=Panel1.left;
speedbutton5.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vup2down:=true;
end;
if(vdown=true)and(vup2down=falsE) then
begin
x:=speedbutton5.left;
y:=speedbutton5.top;
speedbutton5.left:=Panel1.left;
speedbutton5.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vup2down:=false;
end;
end;
procedure TForm1.SpeedButton6Click(Sender: TObject);
procedure detect;
begin
vright:=falsE;
vleft:=false;
vdown:=false;
vup:=falsE;
vright2left:=falsE;
vleft2right:=false;
vdown2up:=false;
vup2down:=falsE;
if(speedbutton6.left+48=Panel1.left)and(speedbutton6.top=Panel1.top) then
vright:=true;
if(speedbutton6.left-48=Panel1.left)and(speedbutton6.top=Panel1.top) then
vleft:=true;
if(speedbutton6.left=Panel1.left)and(speedbutton6.top-40=Panel1.top) then
vup:=true;
if(speedbutton6.left=Panel1.left)and(speedbutton6.top+40=Panel1.top) then
vdown:=true;
end;
begin
detect;
if(vright=true)and(vleft2right=false) then
begin
x:=speedbutton6.left;
y:=speedbutton6.top;
speedbutton6.left:=Panel1.left;
speedbutton6.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vright2left:=true;
end;
if(vleft=true)and(vright2left=false) then
begin
x:=speedbutton6.left;
y:=speedbutton6.top;
speedbutton6.left:=Panel1.left;
speedbutton6.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
end;
if(vup=true)and(vup2down=falsE) then
begin
x:=speedbutton6.left;
y:=speedbutton6.top;
speedbutton6.left:=Panel1.left;
speedbutton6.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vup2down:=true;
end;
if(vdown=true)and(vup2down=falsE) then
begin
x:=speedbutton6.left;
y:=speedbutton6.top;
speedbutton6.left:=Panel1.left;
speedbutton6.top:=Panel1.top;
Panel1.lefT:=x;
Panel1.top:=y;
vup2down:=false;
end;
end;
procedure TForm1.SpeedButton7Click(Sender: TObject);
procedure detect;
begin
vright:=falsE;
vleft:=false;
vdown:=false;
vup:=falsE;
vright2left:=falsE;
vleft2right:=false;
vdown2up:=false;
vup2down:=falsE;
if(speedbutton7.left+48=Panel1.left)and(speedbutton7.top=Panel1.top) then
vright:=true;
if(speedbutton7.left-48=Panel1.left)and(speedbutton7.top=Panel1.top) then
vleft:=true;
if(speedbutton7.left=Panel1.left)and(speedbutton7.top-40=Panel1.top) then
vup:=true;
if(speedbutton7.left=Panel1.left)and(speedbutton7.top+40=Panel1.top) then
vdown:=true;
end;
begin
detect;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?