Міністерство освіти України
Національний університет «Львівська політехніка»
Кафедра автоматизованих систем управління
/
Розрахункова робота
з курсу
«Об'єктно-орієнтоване програмування»
Створити проект Delphi для побудови рухомих графічних зображень. Основні елементи зображення розглядати як об’єкти класів, які необхідно ввести та описати. Рух або зміну об’єктів реалізувати за допомогою відповідних методів класів. Рух більшості об’єктів здійснюється зліва направо, а тоді повторюється або змінює напрямок. Програма має реагувати на керуючі клавіші: 1) для видачі підказки; 2) для зупинки (паузи) та продовження руху; 3) старт із початкового стану; 4) збільшення-зменшення об’єкта; 5) уповільнення-прискорення руху; 6) завершення програми.
Примітка. Опис класів та реалізацію методів виконати в окремому програмному модулі.
Індивідуальне завдання
Файл копіюється (політ).
Текст програми:
unit unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Unit2,Unit3;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1 : TForm1;
tf : TFile;
tr : TRamka;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var i,j,p,h,n:Integer;
begin
with Canvas do
begin
tr.PainR(Form1.Canvas);
//рух файла
h:=-1;
Brush.Color:=16119000;
for p:=1 to 2 do
begin
for i:=1 to 190 do
begin
tf.PainF(105+i-1,50,135+i-1,80,16119000,16119000,Form1.Canvas);
tf.PainF(105+i,50,135+i,80,clWhite,clGray,Form1.Canvas);
if h>=0 then
n:=i+190
else
n:=i;
case n of
1:begin
Pen.Color:=16119000;
Brush.Color:=16119000;
Rectangle(35,110,215,130);
TextOut(37,110,'залишилось 5 секунд');
end;
80:begin
Pen.Color:=16119000;
Brush.Color:=16119000;
Rectangle(35,110,215,130);
TextOut(37,110,'залишилось 4 секунд');
end;
150:begin
Pen.Color:=16119000;
Brush.Color:=16119000;
Rectangle(35,110,215,130);
TextOut(37,110,'залишилось 3 секунд');
end;
220:begin
Pen.Color:=16119000;
Brush.Color:=16119000;
Rectangle(35,110,215,130);
TextOut(37,110,'залишилось 2 секунд');
end;
290:begin
Pen.Color:=16119000;
Brush.Color:=16119000;
Rectangle(35,110,215,130);
TextOut(37,110,'залишилось 1 секунд');
end;
end;
if n<369 then
begin
Pen.Color:=clBlue;
MoveTo(30+n,130);
LineTo(30+n,140);
end;
sleep(12);
end;
h:=1;
Pen.Color:=16119000;
Brush.Color:=16119000;
Rectangle(104+i,50,135+i,80);
end;
Pen.Color:=16119000;
Brush.Color:=16119000;
Rectangle(35,110,215,130);
TextOut(37,110,'виконано');
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TFile=class
procedure PainF(x1:Integer;y1:Integer;x2:Integer;y2:Integer;BColor:LongInt;PColor:LongInt;c:TCanvas);
end;
implementation
procedure TFile.PainF(x1:Integer;y1:Integer;x2:Integer;y2:Integer;BColor:Longint;PColor:LongInt;c:TCanvas);
begin
with c do
begin
Brush.Color:=BColor;
Pen.Color:=PColor;
Rectangle(x1,y1,x2,y2);
end;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TRamka=class
procedure PainR(c:TCanvas);
end;
implementation
procedure TRamka.PainR(c:TCanvas);
begin
with c do
begin
Pen.Color := clBlue;
Brush.Color := 16119000;
Rectangle(30,20,400,200);
MoveTo(30,42);
LineTo(400,42);
TextOut(37,25,'копіювання...');
MoveTo(30,90);
LineTo(400,90);
Rectangle(30,130,400,140);
TextOut(37,170,'Опрацювання: Файл1.exe');
Rectangle(300,167,385,188);
TextOut(315,170,'Скасувати');
//папки
Pen.Color:=clOlive;
Brush.Color := clOlive;
//1 папка
MoveTo(70,50);
LineTo(100,54);
LineTo(100,84);
LineTo(70,79);
LineTo(70,50);
FloodFill(80,60,clOlive,fsBorder);
//2 папка
MoveTo(330,50);
LineTo(360,54);
LineTo(360,84);
LineTo(330,79);
LineTo(330,50);
FloodFill(350,60,clOlive,fsBorder);
//лінія розділення
Pen.Color:=clGray;
MoveTo(30,155);
LineTo(400,155);
//Brush.Color:=clBlue;
//Rectangle(30,130,235,140);
Pen.Color := clred;
Brush.Color:=clRed;
Rectangle(360,20,400,43);
//хрестик
Pen.Color := clWhite;
MoveTo(370,27);
LineTo(390,37);
Moveto(370,37);
LineTo(390,27);
end;
end;
end.
Результат виконання програми
/
Висновок: я створив проект Delphi для побудови рухомих графічних зображень. Рух і зміну об’єктів реалізував за допомогою відповідних методів класу.