Падающий снег

Падающий снег

Программа создает эффект падающего снега. Синие снежинки плавно падают вниз.

Расположите на форме два компонента Timer1: TTimer и PaintBox1: TPaintBox с вкладки System. Выставьте начальные значения в инспекторе объектов (Object inspector)

Form1
 Color: clBlack;
 
PaintBox1
 Align: alClient
 
Timer1
 Enabled: false
 Interval: 5

Перейдите в инспекторе объектов на вкладку событий (events) и для формы на событие создания формы (OnCreate) задайте название процедуры. Лучше это сделать двойныым щелчком. Автоматически будет создана процедура procedure TForm1.FormCreate(Sender: TObject). Впишите в нее следующий код:

procedure TForm1.FormCreate(Sender: TObject);
Var
  i: Integer;
begin
  NumSnow := 100; //   Количество снежинок, не больше 1000
  // Начальные координаты снежинок, инициализация
  for i:=1 to NumSnow  do begin
    Snow[i].X := Random(Form1.ClientWidth);
    Snow[i].Y := Random(Form1.ClientWidth);
    SnowColor[i] := RGB(0,0,200+Random(56));
    SnowSize[i]  := Random(3);
  end;
  Timer1.Enabled := true; // Включение таймера
end;

Так как в программе используется массив координат, количество, цвет и размер снежинок в отдельных переменных, то необходимо их объявить в разделе программы var.

var
  Form1: TForm1;
  NumSnow: Integer;  // Количество снежинок, не больше 1000
  SnowColor: Array [1..1000] of TColor; // Цвет снежинки
  SnowSize : Array [1..1000] of Integer; // Размер снежинки
  Snow: Array [1..1000] of TPoint;  // Координаты снежинок

Теперь для компонента Timer1 на событие OnTimer создайте следующую процедуру

procedure TForm1.Timer1Timer(Sender: TObject);
Var
  i, j: Integer;
begin
 for j:=1 to 10 do begin
  i := Random(NumSnow) + 1; // Выбираем одну любую снежинку
  // Стираем ее цветом фона
  PaintBox1.Canvas.Brush.Color := clBlack;
  PaintBox1.Canvas.Pen.Color := clBlack;
  PaintBox1.Canvas.Rectangle(Snow[i].X-1, Snow[i].Y-1, 
                             Snow[i].X+2, Snow[i].Y+2);
  // Задаем ее новое положение (вниз и в сторону)
  Snow[i].X := Snow[i].X + Random(3) - 1;
  Snow[i].Y := Snow[i].Y + Random(3) + 1;
  // Если достинут конец формы, то начинаем движение сначала
  if Snow[i].Y >= Form1.ClientHeight then begin
    Snow[i].Y := 0;
    Snow[i].X := Random(Form1.ClientWidth);
  end;
  // Рисуем снежинку
  PaintBox1.Canvas.Brush.Color := SnowColor[i];
  PaintBox1.Canvas.Pen.Color := SnowColor[i];
  PaintBox1.Canvas.Ellipse(Snow[i].X-1, Snow[i].Y-1, 
                           Snow[i].X+SnowSize[i], Snow[i].Y+SnowSize[i]);
 end;
end;

Запустите программу. Run.

СКАЧАТЬ ПРОГРАММУРазмер
Урок падающий снег (739)387 кб

Отправил Ср, 03/15/2017 - 15:39

Не могу понять, что я вообще делаю со своей жизнью.

Отправил Чт, 05/05/2016 - 21:55

если изменить цвет фона то остается следы почему не могу понять, и хотела изменить размер снежка тоже самое как можно исправить

Отправил Пнд, 04/27/2015 - 08:55

не пойму как выведенная на экран снежинка долетает до
конца экрана , ведь она рисуется и тут же стирается и
тут же рисуется другая с другими координатами
глупый, понимаю ,вопрос ,но вот уже года полтора не
могу понять этот код и никто объяснить не может

Отправил Пнд, 04/27/2015 - 08:20

не могу понять как на экране
отражаются и двигаются куча снежинок

Поддержка сайта

Восстановление волос средствами, совсем недавно я наткнулась на косметику dsd de luxe.

Последние комментарии

  • Интересная азиатка позирует для интересных фотографий. Но вот что занимательно - топаз на её шее... http://porno-realnoe.ru/uploads/posts/2016-03/medium/1457603890_image_52975.jpg малоледки раком фото бесплатно, развратница получила член для пизды и анала откровенное порно смотреть http://porno-...
  • Chat De Flirt - rehobeth beach md webcam Carson City Webcams. Webcam Kust Carihuela Spain record live feed from webcam! http://murmanspice.com/images/bongacams1.gif FREE PORN VIDEOCHAT! belvedere webcam free sex chat india. Live Webcams In Missoula Montana, free live webcams private rooms...
  • dreamfuck420 https://recordingwebcam.com/image/data/new/chaturbate-dreamfuck420-06-17-2017-13-41-21.jpg show dreamfuck420 from Chaturbate-archive

Счетчики