Мерцающие звезды
Программа строит изображение звездного неба, на котором мерцают звезды разного размера и цвета.
Расположите на форме два компонента Timer1: TTimer и PaintBox1: TPaintBox с вкладки System. Выставьте начальные значения в инспекторе объектов (Object inspector)
Form1 Color: clBlack; PaintBox1 Align: alClient Timer1 Enabled: false Interval: 30
Перейдите в инспекторе объектов на вкладку событий (events) и для формы на событие создания формы (OnCreate) задайте название процедуры. Лучше это сделать двойныым щелчком. Автоматически будет создана процедура procedure TForm1.FormCreate(Sender: TObject). Впишите в нее следующий код:
procedure TForm1.FormCreate(Sender: TObject); Var i: Integer; begin NumStars := 500; // Количество звезд, не больше 1000 // Начальные координаты звезд, инициализация for i:=1 to NumStars do begin Star[i].X := Random(Form1.ClientWidth); Star[i].Y := Random(Form1.ClientWidth); end; Timer1.Enabled := true; // Включение таймера end;
Так как в программе используется массив координат и количество звезд в отдельных переменных, то необходимо их объявить в разделе программы var.
var Form1: TForm1; NumStars: Integer; // Количество звезд, не больше 1000 Star: Array [1..1000] of TPoint; // Координаты звезд
Теперь для компонента Timer1 на событие OnTimer создайте следующую процедуру
procedure TForm1.Timer1Timer(Sender: TObject); Var i: Integer; StarColor: TColor; // Цвет звезды StarSize : Integer; // Размер звезды begin i := Random(NumStars) + 1; // Выбираем одну любую звезду // Стираем ее цветом фона PaintBox1.Canvas.Brush.Color := clBlack; PaintBox1.Canvas.Pen.Color := clBlack; PaintBox1.Canvas.Ellipse(Star[i].X-1, Star[i].Y-1, Star[i].X+2, Star[i].Y+2); // Задаем новые координаты Star[i].X := Random(Form1.ClientWidth); Star[i].Y := Random(Form1.ClientWidth); // Определяем размер и цвет StarColor := RGB(128+Random(128),128+Random(128),128+Random(128)); StarSize := Random(3); // Рисуем звезду PaintBox1.Canvas.Brush.Color := StarColor; PaintBox1.Canvas.Pen.Color := StarColor; PaintBox1.Canvas.Ellipse(Star[i].X-1, Star[i].Y-1, Star[i].X+StarSize, Star[i].Y+StarSize); end;
Запустите программу. Run.
СКАЧАТЬ ПРОГРАММУ | Размер |
---|---|
Урок мерцающие звезды (510) | 387 кб |