Advertisement
Guest User

Pah

a guest
Sep 18th, 2014
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 7.37 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, jpeg, ExtCtrls, StdCtrls, Buttons, Xpman;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     img2: TImage;
  12.     img3: TImage;
  13.     img4: TImage;
  14.     img5: TImage;
  15.     img6: TImage;
  16.     btn1: TButton;
  17.     btn2: TButton;
  18.     tmr1: TTimer;
  19.     img1: TImage;
  20.     img8: TImage;
  21.     img9: TImage;
  22.     tmr2: TTimer;
  23.     btn3: TButton;
  24.     btn4: TButton;
  25.     procedure tmr1Timer(Sender: TObject);
  26.     procedure btn1Click(Sender: TObject);
  27.     procedure FormCreate(Sender: TObject);
  28.     procedure btn2Click(Sender: TObject);
  29.     procedure FormPaint(Sender: TObject);
  30.     procedure tmr2Timer(Sender: TObject);
  31.     procedure btn3Click(Sender: TObject);
  32.     procedure btn4Click(Sender: TObject);
  33.   private
  34.     { Private declarations }
  35.   public
  36.     { Public declarations }
  37.   end;
  38.  
  39. var
  40.   Form1: TForm1;
  41.   R2,R3,R4,R5,R6: Integer;                           //Целочисленные переменные.
  42.   alfa5,alfa3,alfa4,alfa6,alfa2: Real;               //Вещественные переменные.
  43.   PUSK,Showorb,Zvezdi: Boolean;                      //Переменные с true и false.
  44.   ArX:array [1..250] of Byte; ArY:array [1..250] of Byte;
  45.  
  46.  
  47. implementation
  48.  
  49. {$R *.dfm}
  50.  
  51.  
  52. procedure TForm1.tmr1Timer(Sender: TObject);
  53. begin                                            // Таймер с расчетом и последующем передвижением планет по орбите (4ms).
  54. if PUSK then
  55.   begin
  56.  
  57.     img5.Left:=img1.Left+389 + Trunc (Cos(alfa5*pi/180)*R5);  //Расчет следующего шага для планеты.
  58.     img5.top:=img1.Top+395 -   Trunc (Sin(alfa5*pi/180)*R5);
  59.     alfa5:=alfa5+0.7;   //Скорость(расстояние шага) перемещения планет.
  60.  
  61.     img6.Left:=img1.Left+389 + Trunc (Cos(alfa6*pi/180)*R6);
  62.     img6.top:=img1.Top+395 -   Trunc (Sin(alfa6*pi/180)*R6);
  63.     alfa6:=alfa6+1;
  64.  
  65.     img4.Left:=img1.Left+389 + Trunc (Cos(alfa4*pi/180)*R4);
  66.     img4.top:=img1.Top+395 -   Trunc (Sin(alfa4*pi/180)*R4);
  67.     alfa4:=alfa4+0.4;
  68.  
  69.     img2.Left:=img1.Left+389 + Trunc (Cos(alfa2*pi/180)*R2);
  70.     img2.top:=img1.Top+395 -   Trunc (Sin(alfa2*pi/180)*R2);
  71.     alfa2:=alfa2+0.2;
  72.  
  73.     img3.Left:=img4.Left+8 + Trunc (Cos(alfa3*pi/180)*R3);
  74.     img3.top:=img4.Top+8 +   Trunc (Sin(alfa3*pi/180)*R3);
  75.     alfa3:=alfa3+2;
  76.  
  77.     img8.Left:=img4.Left-24;    //Привязка орбиты к Земле (основываясь на текущих координатах земли).
  78.     img8.top:=img4.Top-24;
  79.  
  80.   end;
  81. end;
  82.  
  83. procedure TForm1.btn1Click(Sender: TObject);
  84. begin                                            //Включение и отключение запуска таймера №1. Изменение надписи на кнопке.
  85. if PUSK=False then PUSK:=True else PUSK:=False;
  86. if PUSK=True then btn1.Caption:='Стоп' else btn1.Caption:='Старт';
  87. end;
  88.  
  89. procedure TForm1.FormCreate(Sender: TObject);
  90. begin                                            //Задание позиций планет при создании формы (при запуске приложения). Присвоение надписей кнопкам.
  91.  img5.Left:=459;
  92.  img5.Top:=395;
  93.  img6.Left:=539;
  94.  img6.Top:=395;
  95.  img4.Left:=649;
  96.  img4.Top:=395;
  97.  img2.Left:=769;
  98.  img2.Top:=395;
  99.  img3.Left:=img4.left+48;
  100.  img3.top:=395+8;
  101.  img8.Left:=img4.Left-24;
  102.  img8.top:=img4.Top-24;
  103.  if Showorb=True then btn2.Caption:='Скрыть орбиту'
  104.  else btn2.caption:='Показать орбиту';
  105.  if Zvezdi=True then btn3.Caption:='Скрыть звёзды'
  106.  else btn3.caption:='Показать звёзды';
  107. end;
  108. {СОЗДАНИЕ МАССИВОВ С КООРДИНАТАМИ X и Y}
  109. Procedure CreateStars();
  110. var i:integer;  
  111. Begin
  112.   Randomize;      //Модуль random (для генерирование случайных чисел).
  113.   For i:=1 to 250 do begin
  114.     ArX[i]:=Random(Form1.ClientWidth); //Генерация случайных точек для X and Y
  115.     ArY[i]:=Random(Form1.ClientHeight);//Генерация случайных точек для X and Y
  116.   end;
  117. end;
  118.  
  119. procedure TForm1.FormPaint(Sender: TObject);
  120. var x,y:Integer;
  121.     i,j:  Byte;
  122. begin                            //Рисование звезд и орбит.
  123.    with Form1.Canvas do
  124.    begin
  125.       if Zvezdi=True then        //Звезды (Проверка и включение/отключение). Случайное расположение звёзд.
  126.         begin
  127.           for i:=1 to 250 do
  128.             Pixels[ArX[i],ArY[i]]:=clWhite;       //Рисование звезд (белой точки) по координатам x,y.
  129.         end
  130.       else
  131.             begin
  132.             Canvas.Brush.Color := clBlack;
  133.             Canvas.FillRect(Canvas.ClipRect);    //Заливка канвы чёрным цветом.
  134.             end;
  135.  
  136.       if Showorb then                  //Орбиты (Проверка и включение/отключение).
  137.          begin
  138.            Pen.Color:=clRed;           //Выбор цвета.
  139.            Brush.style:=bsClear;       //Выбор заливки эллипса.
  140.            Ellipse(21,29,786,788);
  141.            Ellipse(144,150,667,669);
  142.            Ellipse(254,260,557,559);   //Рисование эллипса (x,y,z,j); x,y - левый верхний угол; z,j - правый нижний угол.
  143.            Ellipse(334,340,477,480);
  144.            img8.Visible:=true;         //Включение видимости орбиты земли (.ico с альфа каналом).
  145.          end
  146.       else
  147.            img8.Visible:=false;        //Отключени видимости орбиты земли.
  148.  
  149.    end;
  150. end;
  151.  
  152. procedure TForm1.btn2Click(Sender: TObject);
  153. begin
  154.   if Showorb=False then Showorb:=True else Showorb:=False;     //Для работоспособности показа/скрытия орбит.
  155.  
  156. if Showorb then         // Включение таймера №2. Изменение надписи на кнопке при показе/скрытии орбит.
  157.   begin
  158.    tmr2.Enabled:=true;
  159.    btn2.Caption:='Скрыть орбиту';
  160.   end
  161.            else
  162.   begin
  163.   tmr2.Enabled:=True;
  164.   btn2.caption:='Показать орбиту';
  165.   end;
  166. end;
  167.  
  168. procedure TForm1.tmr2Timer(Sender: TObject);     //Таймер для мнгновенного обновления канвы и последующего отключения таймера (5ms).
  169. begin
  170.   img1.Visible:=True;
  171.   img1.Visible:=False;
  172.   tmr2.Enabled:=false;
  173. end;
  174.  
  175. procedure TForm1.btn3Click(Sender: TObject);   //Изменение надписи на кнопке при показе/скрытии звёзд. Включение таймера №2.
  176. begin
  177.   if Zvezdi=False then
  178.     begin
  179.     Zvezdi:=True;
  180.     btn3.Caption:='Скрыть звёзды';
  181.     end
  182.                   else
  183.     begin
  184.      Zvezdi:=False;
  185.      btn3.Caption:='Показать звёзды';
  186.     end;
  187.   tmr2.Enabled:=True;
  188. end;
  189.  
  190. procedure TForm1.btn4Click(Sender: TObject);
  191. begin
  192. Close;
  193. end;
  194.  
  195. begin                           //Блок инициализации.
  196.  CreateStars();
  197.  Zvezdi:=False;
  198.  Showorb:=false;
  199.  PUSK:=False;
  200.  alfa5:=0;
  201.  alfa6:=0;
  202.  alfa4:=0;
  203.  alfa3:=0;
  204.  alfa2:=0;
  205.  R5:=70;
  206.  R2:=380;
  207.  R3:=40;
  208.  R4:=260;
  209.  R6:=150;
  210.  
  211. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement