Проект Lazarus “Візерунки”

Про матеріал
Lazarus “Візерунки” - дуже цікавий проект. Опрацювання найпростіших графічних об'єктів - пікселів. Цикли, вказівка розгалуження.
Перегляд файлу

 

Проект Lazarus “Візерунки

 

Обєкти:

Вкладка Additional: ТImage1, TImage2

Властивості: ТImage1, TImage2: Width: 100, Height: 100 (розміри)

                                       TImage2: Visible: false  (невидимий)

Вкладка System: TTimer1

Властивостi: TTimer1: Enabled: false, Interval : 1000 (інтервал спрацювання таймера, період оновлення зображення 1с)

 

  1.    Побудова початкового зображення (маленького квадрата, центр якого співпадає з центром  TImage2)

 

procedure TForm1.Button1Click(Sender: TObject);

  var

  i,j:integer;

begin

   with Image2.Canvas do for i:=0 to Image1.Width-1 do for j:=0 to Image1.Height-1 do Pixels[i,j]:=clWhite;

   with Image2.Canvas do

   for i:=0 to 5 do

   begin

     Pixels[47+i,47]:=clBlack;

     Pixels[47,47+i]:=clBlack;

     Pixels[47+i,52]:=clBlack;

     Pixels[52,47+i]:=clBlack;

   end;

   Timer1.Enabled:=true;                

 

  1.    а) Копіювання зображення із TImage2 в TImage1

      б) Зміна конфігурації чорних пікселів в TImage2 в залежності від взаємного розташування в TImage1.

 

procedure TForm1.Timer1Timer(Sender: TObject);

var

  i,j,c:integer;

begin

    with Image1.Canvas do

    begin

      for i:=0 to Image1.Width-1 do for j:=0 to Image1.Height-1 do Pixels[i,j]:=Image2.Canvas.Pixels[i,j];

      for i:=1 to Image1.Width-2 do for j:=1 to Image1.Height-2 do

      begin

        c:=0;

        if Pixels[i-1,j]=clblack then inc(c);

        if Pixels[i-1,j-1]=clblack then inc(c);

        if Pixels[i-1,j+1]=clblack then inc(c);

        if Pixels[i+1,j]=clblack then inc(c);

        if Pixels[i+1,j-1]=clblack then inc(c);

        if Pixels[i+1,j+1]=clblack then inc(c);

        if Pixels[i,j-1]=clblack then inc(c);

        if Pixels[i,j+1]=clblack then inc(c);

        if (Pixels[i,j]=clwhite) and (c=2) then Image2.Canvas.Pixels[i,j]:=clblack;

        if (Pixels[i,j]=clBlack) and ((c<2) or (c=4)) then Image2.Canvas.Pixels[i,j]:=clwhite;

      end;

    end;

end;   

 

Правила побудови узорів:

 

  • Якщо у білого пікселя є рівно 2 чорних сусіди, то зробити його також чорним.

Пікселі-сусіди розташовані в ближніх клітинках по горизонталі, вертикалі і діагоналі ( у    кожного внутрішнього пікселя є рівно 8 сусідів).

  • Якщо у чорного пікселя  рівно 4 чорних сусіда або чорних сусідів менше 2, то зробити його білим.

 

    

 

 

Зображення створених візерунків.

 

                   

 

       

doc
До підручника
Інформатика 9 клас (Бондаренко О.О., Ластовецький В.В., Пилипчук О.П., Шестопалов Є.А.)
Додано
29 листопада 2019
Переглядів
817
Оцінка розробки
Відгуки відсутні
Безкоштовний сертифікат
про публікацію авторської розробки
Щоб отримати, додайте розробку

Додати розробку