Объект Свойство Значение Label1 Caption Моя первая программа


procedure fractal (leng: byte; s: real); var



бет20/23
Дата25.09.2023
өлшемі1.52 Mb.
#478523
түріПрограмма
1   ...   15   16   17   18   19   20   21   22   23
Лабораторные

procedure fractal (leng: byte; s: real);
var
tau,tau0,fi,fi0,x,y: real;
i: integer;
function mod2pi (x: real): real;
begin
if x<2*Pi then result:=x else result:=mod2pi(x-2*Pi);
end;
begin
with form1.Canvas do
begin
Rectangle(0,0,form1.ClientWidth,Form1.ClientHeight);
pen.Color:=clred;
x:=Form1.ClientWidth/2;
y:=Form1.ClientHeight/2;
moveTo (round(x),round(y));
x:=x+leng;
lineTo (round(x),round(y));
fi0:=0; tau0:=0;
for i:=1 to 10000 do
begin
Application.ProcessMessages;
tau:=mod2pi(tau0+2*Pi*s);
fi:=mod2pi(fi0+tau0);
x:=x+leng*cos(fi); y:=y-leng*sin(fi);
lineTo (round(x),round(y));
fi0:=fi; tau0:=tau;
end;
end;
end;

  1. Lengg определяет длину отрезка и является константой, определённой в начале модуля. Придайте этой переменной начальное значение в пределах от 3 до 5 пикселей

  2. На создание формы пишем код инициализации счётчика случайных чисел

  3. Для непрерывной генерации новых фракталов добавляем на форму таймер и пишем код перерисовки рисунка

procedure TForm1.Timer1Timer(Sender: TObject);
var s: real;
begin
s:=sqrt(random(1000));
fractal (Lengg,s);
end;

  1. Вместо подчёркнутой части кода можно писать различные иррациональные числа и будут получаться различные формы фракталов

  2. Для нормальной работы хранителя его размер должен быть достаточно маленьким. Использование любого визуального компонента (в том числе и формы) увеличивает размер программы свыше 200 Кб. В нашем случае так и будет. Создание маленьких хранителей достаточно сложная задача

  3. Описываем глобальную переменную

crs : TPoint; {первоначально расположение курсора мышки}

  1. На событие показа формы (OnShow) пишем следующий код

WindowState := wsMaximized; {окошко будет на полный экран}
GetCursorPos(crs); {получаем позицию курсора}
Application.OnMessage := DeactivateScrSaver; {проверяем мышку/клавиатуру}
ShowCursor(false); {скрываем курсор}
{начинаем отображение скринсейвера...}
FormPaint(self);

  1. При скрытии формы будет происходить возврат управления пользователю

Application.OnMessage := nil; {запрещаем сообщения}
ShowCursor(true); {возвращаем курсор назад}

  1. Далее пишем процедуру проверки, не нажал ли пользователь клавишу или не сдвинул ли мышь



Достарыңызбен бөлісу:
1   ...   15   16   17   18   19   20   21   22   23




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет