Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовая работа / Курсовая с выбором цвета / Новая папка (2) - копия / Unit1
.pas unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, XPMan;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
image1: TImage;
xpmanifest1: TXPManifest;
Button3: TButton;
rg1: TRadioGroup;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
flag:Boolean;
col:TColor;
implementation
{$R *.dfm}
uses unit2;
procedure gf;
const
iterations = 500000; //Кол-во итераций
var
t, x, y: real;
p: real;//CЛУЧАЙНАЯ ВЕЛИЧИНА
k: longint;
mid_x, mid_y, radius: integer;
begin
mid_x := form1.width div 3;
mid_y := form1.height -100 ;
radius := trunc(0.1 * mid_y);
randomize;
x := 1.0;
y := 0.0;
for k := 1 to iterations do
begin
p := random;
t := x;
if p <= 0.85 then //Построение верхней части листа
begin
x := 0.84 * x -0.045 * y;
y := 0.045 * t + 0.86 * y + 1.6;
end
else
if p <= 0.92 then //Построение левого листа
begin
x := 0.25 * x - 0.26 * y;
y := 0.23 * t + 0.25 * y + 1.6;
end //Построение правого листа
else if p <= 0.99 then
begin
x := -0.135 * x + 0.28 * y;
y := 0.26 * t + 0.245 * y + 0.44;
end
else
begin //Построение стебля
x := 0.0;
y := 0.16 * y ;
end;
Form1.image1.Canvas.Pixels[mid_x+round(radius*x), mid_y-round(radius*y)+35]:=col;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
case rg1.ItemIndex of
0: col:=clGreen;
1: col:=clRed;
2: col:=clBlue;
3: col:=clOlive;
4: col:=clMaroon;
5: col:=clPurple;
6: col:=clLime;
7: col:=clYellow;
end;
gf;
button1.enabled:=false;
Button3.Enabled:=True;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Visible:=false;
form2.show;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
{if checkbox1.Checked then begin
image1.picture:=nil;
Button3.Visible:=False;
end else begin
Button3.Visible:=False;
end; }
image1.Canvas.Rectangle(0,0,ClientWidth,ClientHeight);
Button3.Enabled:=False;
Button1.Enabled:=True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
image1.Canvas.Rectangle(0,0,ClientHeight,ClientWidth);
Form1.BorderIcons := [biSystemMenu,biMinimize];
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
rg1.ItemIndex:=0;
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, XPMan;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
image1: TImage;
xpmanifest1: TXPManifest;
Button3: TButton;
rg1: TRadioGroup;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
flag:Boolean;
col:TColor;
implementation
{$R *.dfm}
uses unit2;
procedure gf;
const
iterations = 500000; //Кол-во итераций
var
t, x, y: real;
p: real;//CЛУЧАЙНАЯ ВЕЛИЧИНА
k: longint;
mid_x, mid_y, radius: integer;
begin
mid_x := form1.width div 3;
mid_y := form1.height -100 ;
radius := trunc(0.1 * mid_y);
randomize;
x := 1.0;
y := 0.0;
for k := 1 to iterations do
begin
p := random;
t := x;
if p <= 0.85 then //Построение верхней части листа
begin
x := 0.84 * x -0.045 * y;
y := 0.045 * t + 0.86 * y + 1.6;
end
else
if p <= 0.92 then //Построение левого листа
begin
x := 0.25 * x - 0.26 * y;
y := 0.23 * t + 0.25 * y + 1.6;
end //Построение правого листа
else if p <= 0.99 then
begin
x := -0.135 * x + 0.28 * y;
y := 0.26 * t + 0.245 * y + 0.44;
end
else
begin //Построение стебля
x := 0.0;
y := 0.16 * y ;
end;
Form1.image1.Canvas.Pixels[mid_x+round(radius*x), mid_y-round(radius*y)+35]:=col;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
case rg1.ItemIndex of
0: col:=clGreen;
1: col:=clRed;
2: col:=clBlue;
3: col:=clOlive;
4: col:=clMaroon;
5: col:=clPurple;
6: col:=clLime;
7: col:=clYellow;
end;
gf;
button1.enabled:=false;
Button3.Enabled:=True;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Visible:=false;
form2.show;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
{if checkbox1.Checked then begin
image1.picture:=nil;
Button3.Visible:=False;
end else begin
Button3.Visible:=False;
end; }
image1.Canvas.Rectangle(0,0,ClientWidth,ClientHeight);
Button3.Enabled:=False;
Button1.Enabled:=True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
image1.Canvas.Rectangle(0,0,ClientHeight,ClientWidth);
Form1.BorderIcons := [biSystemMenu,biMinimize];
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
rg1.ItemIndex:=0;
end;
end.
Соседние файлы в папке Новая папка (2) - копия