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 + -
显示快捷键?