Міністерство освіти України
Національний університет «Львівська політехніка»
Кафедра автоматизованих систем управління
Розрахункова робота
з курсу
«Об'єктно-орієнтоване програмування»
Створити проект Delphi для побудови рухомих графічних зображень. Основні елементи зображення розглядати як об’єкти класів, які необхідно ввести та описати. Рух або зміну об’єктів реалізувати за допомогою відповідних методів класів. Рух більшості об’єктів здійснюється зліва направо, а тоді повторюється або змінює напрямок. Програма має реагувати на керуючі клавіші: 1) для видачі підказки; 2) для зупинки (паузи) та продовження руху; 3) старт із початкового стану; 4) збільшення-зменшення об’єкта; 5) уповільнення-прискорення руху; 6) завершення програми.
Примітка. Опис класів та реалізацію методів виконати в окремому програмному модулі.
Індивідуальне завдання
Літак летить.
Текст програми:
unit lb3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,unit1;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
plane1:Tplane;
implementation
uses lb3_1;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
with Canvas do { ïðàöþºìî ç âëàñòèâ³ñòþ Canvas êëàñó TForm } begin
//ochushchennya
PatBlt(Form1.Canvas.Handle, 0, 0,
Form1.ClientWidth, Form1.ClientHeight, WHITENESS);
Pen.Color := clBlack;
Brush.Color := clBlack;
plane1:=Tplane.Create;
// car1.plane(form1.canvas);
plane1.planeup(Form1.Canvas);
plane1.planedown(Form1.Canvas);
end;
end;
end.
unit unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,StdCtrls;
type Tplane = class(TObject)
k:integer;
xr,yr:integer;
procedure planedown(c:tcanvas);
procedure planeup(c:tcanvas);
procedure plane(c:tcanvas);
end;
implementation
procedure Tplane.plane(c:tcanvas);
begin
with c do begin
Pen.Color := clred;
Brush.Color := clblack;
moveto(10,200);
lineto(70,200);
lineto(40,230);
lineto(70,230);
lineto(100,200);
lineto(150,200);
lineto(160,190);
lineto(150,180);
lineto(135,180);
lineto(130,165);
lineto(30,165);
lineto(30,145);
lineto(10,145);
lineto(10,200);
moveto(100,165);
lineto(90,150);
lineto(65,150);
lineto(70,165);
end;
end;
procedure Tplane.planedown(c:Tcanvas);
begin
with c do begin
yr:=100;
xr:=0;
while (xr<1200) do
begin
Sleep(5);
//sturannya
PatBlt(c.Handle, 0, 0,2000, 2000, WHITENESS);
//malyvannya
if (k=3) then
begin
yr:=yr-1;
k:=0;
end;
k:=k+1;
xr:=xr+1;
Pen.Color := clred;
Brush.Color := clblack;
Pen.Color := clred;
Brush.Color := clblack;
moveto(10+xr,200-yr);
lineto(70+xr,200-yr);
lineto(40+xr,230-yr);
lineto(70+xr,230-yr);
lineto(100+xr,200-yr);
lineto(150+xr,200-yr);
lineto(160+xr,190-yr);
lineto(150+xr,180-yr);
lineto(135+xr,180-yr);
lineto(130+xr,165-yr);
lineto(30+xr,165-yr);
lineto(30+xr,145-yr);
lineto(10+xr,145-yr);
lineto(10+xr,200-yr);
moveto(100+xr,165-yr);
lineto(90+xr,150-yr);
lineto(65+xr,150-yr);
lineto(70+xr,165-yr);
end;
end;
end;
procedure Tplane.planeup(c:Tcanvas);
begin
with c do begin
xr:=0;
yr:=-200;
while (xr<1100) do
begin
Sleep(5);
//sturannya
PatBlt(c.Handle, 0, 0,2000, 2000, WHITENESS);
//malyvannya
if (k=3) then
begin
yr:=yr+1;
k:=0;
end;
k:=k+1;
xr:=xr+1;
Pen.Color := clred;
Brush.Color := clblack;
Pen.Color := clred;
Brush.Color := clblack;
moveto(10+xr,200-yr);
lineto(70+xr,200-yr);
lineto(40+xr,230-yr);
lineto(70+xr,230-yr);
lineto(100+xr,200-yr);
lineto(150+xr,200-yr);
lineto(160+xr,190-yr);
lineto(150+xr,180-yr);
lineto(135+xr,180-yr);
lineto(130+xr,165-yr);
lineto(30+xr,165-yr);
lineto(30+xr,145-yr);
lineto(10+xr,145-yr);
lineto(10+xr,200-yr);
moveto(100+xr,165-yr);
lineto(90+xr,150-yr);
lineto(65+xr,150-yr);
lineto(70+xr,165-yr);
end;
end;
end;
end.
Висновок: я створив проект Delphi для побудови рухомих графічних зображень. Рух і зміну об’єктів реалізував за допомогою відповідних методів класу.