view unit_Easteregg.pas @ 2:104f349dcfcc default tip

Added tag cdar-2.3 for changeset 87b91371db05b8cabe2dc3e2d2dc3ba830ab463b
author "Meillo r e t u r n s <meillo@marmaro.de>"
date Sun, 03 Dec 2006 21:56:41 +0100
parents ef71164288c1
children
line wrap: on
line source

unit unit_Easteregg;

interface//####################################################################################

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls;

type
  Tform_easteregg = class(TForm)
    img_Marmaro: TImage;
    Timer1: TTimer;
    procedure img_MarmaroClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    vx : integer;
    vy : integer;
    x1 : integer;
    y1 : integer;
    x2 : integer;
    y2 : integer;
  public
    { Public declarations }
  end;

var
  form_easteregg: Tform_easteregg;

implementation//###############################################################################

{$R *.dfm}//###################################################################################

//------------------------------------------------------------------------------ form create
procedure Tform_easteregg.FormCreate(Sender: TObject);
begin
  vx := 0;
  vy := 0;
  x1 := form_Easteregg.Left + (form_Easteregg.Width div 2);
  y1 := form_Easteregg.top + (form_Easteregg.height div 2);
  x2 := screen.Width div 2;
  y2 := screen.Height div 2;
end;//--------------------------------------------------------------------------

//#############################################################################################

//------------------------------------------------------------------------------ kill
procedure Tform_easteregg.img_MarmaroClick(Sender: TObject);
begin
  application.Terminate;
end;//--------------------------------------------------------------------------

//------------------------------------------------------------------------------ move form
procedure Tform_easteregg.Timer1Timer(Sender: TObject);
begin
  // keep window in foreground
  SetWindowPos(handle, HWND_TopMost, left, top, width, height, SWP_ShowWindow);

  randomize; // for better random

  x1 := form_Easteregg.Left + (form_Easteregg.Width div 2);
  y1 := form_Easteregg.top + (form_Easteregg.height div 2);

  if x1 < x2 then
    begin
        vx := vx + (random(10)-4);
    end
  else
    begin
        vx := vx + (random(10)-6);
    end;

  if y1 < y2 then
    begin
        vy := vy + (random(10)-4);
    end
  else
    begin
        vy := vy + (random(10)-6);
    end;

  if (vx > 0) then form_easteregg.Left := form_easteregg.Left + (random(2)+1)
  else form_easteregg.Left := form_easteregg.Left - (random(2)+1);

  if (vy > 0) then form_easteregg.top := form_easteregg.top + (random(2)+1)
  else form_easteregg.top := form_easteregg.top - (random(2)+1);

  if form_easteregg.Left < 0 then form_Easteregg.left := 0;
  if form_easteregg.Left > screen.Width - form_easteregg.Width then
      form_Easteregg.Left := screen.Width - form_Easteregg.Width;
  if form_easteregg.top < 0 then form_Easteregg.top := 0;
  if form_easteregg.top > screen.Height - form_easteregg.height then
      form_Easteregg.top := screen.Height - form_Easteregg.height;
end;//--------------------------------------------------------------------------


end.//########################################################################################