 |
|
|
Informatik |
|
Autor: be
21.09.2005 10:52 438
|
|
|
Raumschiff - Lösung
Der manuell geschriebene Quelltext ist blau hervorgehoben.
unit mRaumschiff;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
btNeu: TButton;
Label1: TLabel;
edFaktor: TEdit;
procedure FormCreate(Sender: TObject);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure btNeuClick(Sender: TObject);
private
{ Private-Deklarationen }
punkteX, punkteY: Array[1..300] of Real;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);
end;
procedure TForm1.btNeuClick(Sender: TObject);
var i: Integer;
begin
with Image1.Canvas do
begin
Brush.Color := clWhite;
Rectangle(0,0,Image1.Width,Image1.Height);
Brush.Color := clBlack;
for i:=1 to 300 do
begin
punkteX[i] := Random(Image1.Width);
punkteY[i] := Random(Image1.Height);
Ellipse(Round(punkteX[i])-2,Round(punkteY[i])-2,
Round(punkteX[i])+2,Round(punkteY[i])+2)
end;
end;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var i: Integer;
faktor: Real;
begin
faktor := StrToFloat(edFaktor.Text);
with Image1.Canvas do
begin
Brush.Color := clWhite;
Rectangle(0,0,Image1.Width,Image1.Height);
Brush.Color := clBlack;
for i:=1 to 300 do
begin
punkteX[i] := punkteX[i] + (punkteX[i]-X)*faktor;
punkteY[i] := punkteY[i] + (punkteY[i]-Y)*faktor;
if (punkteX[i]<0) or (punkteX[i]>Image1.Width)
or (punkteY[i]<0) or (punkteY[i]>Image1.Width) then
begin
punkteX[i] := Random(Image1.Width);
punkteY[i] := Random(Image1.Height);
end;
Ellipse(Round(punkteX[i])-2,Round(punkteY[i])-2,
Round(punkteX[i])+2,Round(punkteY[i])+2)
end;
end;
end;
end.