Падающий снег
Программа создает эффект падающего снега. Синие снежинки плавно падают вниз.
Расположите на форме два компонента 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.
СКАЧАТЬ ПРОГРАММУ | Размер |
---|---|
Урок падающий снег (869) | 387 кб |