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

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

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

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

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

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

Private Internet Protocol address 192.168.1.1 в Москве. | Ненадлежащая утилизация ламп накаливания приводит

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

  • http://ziter.ru/index.php?productID=3751 http://eur-style.ru/product/713 http://samaram.ru/product/nemnogo-o-napolnyh-chasah http://salonturov.ru/index.php?productID=43345
  • What Do Installment Loans Present Themselves? In case if one feels need in ready money straight away, the best method to get it is to turn to installment loans that have historically been known as the most efficient and timely for enormous buyings. Installment loan constitutes a close-end loan,...
  • ОСТАЛОСЬ ВСЕГО 15 ДЕНЕЖНЫХ БОНУСОВ! ВЫПЛАЧЕНО БОЛЕЕ 4 000 000 РУБЛЕЙ ! ---http://link.futbol/8lko

Счетчики