Blob Blame Raw
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  Math;

type

  { TForm1 }

  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

const
  starsCount = 200;

var
  Form1: TForm1;
  sx: array [0..starsCount] of integer;
  sy: array [0..starsCount] of integer;
  sz: array [0..starsCount] of integer;

implementation

{$R *.lfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  i : integer;
begin
  for i := 0 to starsCount-1 do begin
    sx[i] := Random(ClientWidth);
    sy[i] := Random(ClientHeight);
    sz[i] := RandomRange(1, 10);
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to starsCount-1 do begin
    sx[i] := sx[i] - sz[i];
    if sx[i] < 0 then begin
      sx[i] := ClientWidth;
      sy[i] := Random(ClientHeight);
      sz[i] := RandomRange(1, 10);
    end;
  end;

  Refresh;
end;

procedure TForm1.FormPaint(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to starsCount-1 do begin
    Canvas.Pixels[ sx[i], sy[i] ] := clWhite;
  end;
end;

end.