unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Types, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; type TForm1 = class(TForm) Label1: TLabel; Timer1: TTimer; procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClick(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Timer1Timer(Sender: TObject); private { Private 宣言 } FOldMousePos: TPoint; public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin WindowState := TWindowState.wsMaximized; ShowCursor(False); Randomize; FOldMousePos := Point(-1, -1); // Left := 0; // Top := 0; // Width := Screen.Width; // Height := Screen.Height; end; procedure TForm1.FormDestroy(Sender: TObject); begin ShowCursor(True); end; procedure TForm1.FormClick(Sender: TObject); begin Application.Terminate; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin Application.Terminate; end; procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Application.Terminate; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var dx, dy: Integer; const DIST: Integer = 32; begin if FOldMousePos.X <> -1 then begin dx := FOldMousePos.X - X; dy := FOldMousePos.Y - Y; if ((dx * dx) + (dy * dy)) > (DIST * DIST) then Application.Terminate; end; FOldMousePos := Point(X, Y); end; procedure TForm1.Timer1Timer(Sender: TObject); begin Label1.Left := Random(ClientWidth - Label1.Width); Label1.Top := Random(ClientHeight - Label1.Height); end; end.