Мерцающие звезды

Мерцающие звезды

Программа строит изображение звездного неба, на котором мерцают звезды разного размера и цвета.

Расположите на форме два компонента 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.

СКАЧАТЬ ПРОГРАММУРазмер
Урок мерцающие звезды (501)387 кб

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

  • prescription drugs online viagra for men cheap canadian pharmacy online http://genericvgrmax.com# 5mg cialis what is cialis cheap canadian pharmacy online http://cialisxtl.com/#r nose congested when taking cialis viagra vs cialis where to bay cialis (tadalafil) pills 80mg http://genericvgrmax.com#
  • http://canadianpharmacystorm.com 1 http://viagrawithoutdoctorspres.com j http://canpharmb3.com o http://genericvgrmax.com 9 http://cialisxtl.com
  • Международная торговля не бывает легкой, в частности в случае когда речь ведется о доставке начальной партии товара и логистика предприятия только налаживает свою работу. Международная торговля, это бизнес, требующий не только вложений, но и услуг компаний, оказывающих услуги доставки,...

Счетчики