Код: Выделить всё
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
PaintBox1: TPaintBox;
Button1: TButton;
Edit1: TEdit;
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
procedure Triangle(x1,y1,x2,y2,x3,y3: integer; t: integer);
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Types;
{$R *.dfm}
procedure TForm1.Triangle(x1,y1,x2,y2,x3,y3: integer; t: integer);
var
x1m,y1m,x2m,y2m,x3m,y3m: integer;
begin
if t>0 then
begin
x1m:=x1+(x2-x1) div 2;
y1m:=y1+(y2-y1) div 2 +Random(51)-100;
x2m:=x2+(x3-x2) div 2;
y2m:=y2+(y3-y2) div 2 +Random(51)-100;
x3m:=x3+(x1-x3) div 2;
y3m:=y3+(y1-y3) div 2 +Random(51)-100;
Triangle(x1,y1,x1m,y1m,x3m,y3m,t-1);
Triangle(x1m,y1m,x2,y2,x2m,y2m,t-1);
Triangle(x2m,y2m,x3,y3,x3m,y3m,t-1);
Triangle(x1m,y1m,x2m,y2m,x3m,y3m,t-1);
end else
begin
PaintBox1.Canvas.MoveTo(x1,y1);
PaintBox1.Canvas.LineTo(x2,y2);
PaintBox1.Canvas.LineTo(x3,y3);
PaintBox1.Canvas.LineTo(x1,y1);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
x1,y1,x2,y2,x3,y3: integer;
begin
PaintBox1.Canvas.Rectangle(-1,-1,PaintBox1.Width+1,PaintBox1.Height+1);
x1:=PaintBox1.Width-Random(PaintBox1.Width+1);
y1:=(PaintBox1.Height div 2)-Random((PaintBox1.Height div 2)+1);
x2:=(PaintBox1.Width div 2)+Random((PaintBox1.Width div 2)+1);
y2:=(PaintBox1.Height div 2)+Random((PaintBox1.Height div 2)+1);
x3:=(PaintBox1.Width div 2)-Random((PaintBox1.Width div 2)+1);
y3:=(PaintBox1.Height div 2)+Random((PaintBox1.Height div 2)+1);
Triangle(x1,y1,x2,y2,x3,y3,StrToInt(Edit1.Text));
end;
end.