unit1.pas
来自「Delphi7编程80例(完全版)」· PAS 代码 · 共 109 行
PAS
109 行
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, jpeg, StdCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Timer1: TTimer;
Image2: TImage;
Image3: TImage;
Timer2: TTimer;
Image4: TImage;
Button1: TButton;
procedure Timer1Timer(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Timer2Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Left:=0; //下移小狗位置复原
Image1.Top:=0;
Image3.Top:=Form1.Height-16; //上升浮桥位置复原
Image4.Visible:=False;
//开启Timer
Timer1.Enabled:=True;
Timer2.Enabled:=True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
If Image1.Top+Image1.Height>Image2.Top Then
{这句代码主要是和后面的Image1.Top:=Image1.Top+4相抵消,
小狗就只有水平方向的运动速度了}
Image1.Top:=Image1.Top-4;
If PtInRect(Rect(Image1.Left,Image1.Top,Image1.Left+Image1.Width,Image1.Top+Image1.Height),
Point(Image3.Left,Image3.Top)) Then //小狗遇到了桥
Timer1.Enabled:=False;
If (Image1.Top>Image3.Top+Image3.Height) or //小狗位于桥的下放
(Image1.Top+Image1.Height>Form1.Height) or //小狗超过了窗口的下边界
(Image1.Left+Image1.Width>Form1.Width) Then //小狗超过了窗口的右边界
Begin
Timer1.Enabled:=False;
Timer2.Enabled:=False;
showMessage('游戏失败');
end;
Image1.Left:=Image1.Left+4; //小狗右移
Image1.Top:=Image1.Top+4; //小狗下移
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
Image3.Top:=Image3.Top-2;
If PtInRect(Rect(Image1.Left,Image1.Top,Image1.Left+Image1.Width,Image1.Top+Image1.Height),
Point(Image3.Left,Image3.Top)) Then
Image1.Top:=Image1.Top-2; //Image1和Image3一起向上运动
If Image3.Top=40 Then //快接近顶端时,停止Timer2
Begin
Image4.Left:=Image3.Left+Image3.Width; //两只小狗见面
Image4.Top:=Image1.Top;
Image4.Visible:=True;
Timer2.Enabled:=False;
Application.MessageBox('成功了!两只小狗见面了!','游戏成功',1);
end;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
If ssLeft in Shift Then
Begin
Image2.Visible:=True; //当按下左键时,渡桥可见
Image2.Left:=x;
Image2.Top:=y;
end
Else
Begin
{没有按下左键但鼠标又在移动时,渡桥放置在左下角,使左边小狗可以继续下移 }
Image2.Left:=10;
Image2.Top:=Height-120;
end;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image2.Visible:=False; //当松开鼠标时,渡桥隐藏
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?