Отчет18 (956692)
Текст из файла
Лабораторная работа 18.
Графический режим. Наследование. Полиморфизм.
Задача: Разработать программу, содержащую описание трех графических объектов:
правильный треугольник, ромб, астроида.
Реализуя механизм полиморфизма, привести объекты в одновременное движение по экрану с отражением от его границ (угол падения равен углу отражения).
Объектная декомпозиция:
Главное окно приложения
1
2 3 2 3 2 3
Треугольник
Астроида
Ромб
1 – Активизировать
2 – Создать
3 – Перерисовать
Граф состояния интерфейса:
Главное
окно приложения
Диаграмма классов:
Текст программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type Tfigure = class
private
xc,yc:integer;
public
Image:Timage;
stepX,stepy:integer;
r:Integer;
procedure sdvig;
Constructor Create(aImage:Timage;ax,ay:Integer;ar:Integer);
Procedure Draw;virtual;abstract;
end;
type Ttreug = class(Tfigure)
public
x1,y1:Integer;
stepx1,stepy1:integer;
procedure Draw;override;
end;
type Tromb = class(Tfigure)
public
x2,y2:Integer;
stepx2,stepy2:integer;
procedure Draw;override;
end;
type Tastr = class(Tfigure)
public
x3,y3:Integer;
stepx3,stepy3:integer;
procedure Draw;override;
end;
var
Form1: TForm1;
move:boolean;
height,widtch,shx1,shy1,shx2,shy2,
shx3,shy3,xp,yp,xp2,yp2,yp3,xp3,i,i1,q:integer;
implementation
procedure Tfigure.sdvig;
begin
q:=q+1;
case q of
1:
begin
stepx:=shx1;
stepy:=shy1;
xp:=0;
yp:=0;
i:=0;
i1:=45;
widtch:=440;
height:=300;
end;
2:
begin
stepX:=shx2;
stepy:=shy2;
xp:=0;
yp:=0;
i:=0;
i1:=55;
widtch:=440;
height:=300;
end;
3:
begin
stepX:=shx3;
stepy:=shy3;
xp:=0;
yp:=0;
i:=0;
i1:=35;
widtch:=440;
height:=270;
end;
end;
if xc=widtch then stepx:=-1;
if yc=height then stepy:=-1;
if xc=i then stepx:=1;
if yc=i1 then stepy:=1;
xc:=xc+stepx;
yc:=yc+stepy;
case q of
1:
begin
shx1:=stepx;
shy1:=stepy;
end;
2:
begin
shx2:=stepx;
shy2:=stepy;
end;
3:
begin
shx3:=stepx;
shy3:=stepy;
end;
end;
end;
Constructor Tfigure.Create;
begin
Inherited Create;
Image:=aImage;
xc:=60;
yc:=170;
r:=30;
end;
procedure Ttreug.draw;
begin
x1:=xc;
y1:=yc;
image.Canvas.moveto(x1,y1);
image.Canvas.lineto(x1+60,y1);
image.Canvas.lineto(x1+30,y1-52);
image.Canvas.lineto(x1,y1);
end;
procedure Tromb.draw;
begin
x2:=xp2+xc;
y2:=yc;
image.canvas.moveto(x2,y2);
image.canvas.lineto(x2+30,y2-30);
image.canvas.lineto(x2,y2-60);
image.canvas.lineto(x2-30,y2-30);
image.canvas.lineto(x2,y2);
end;
procedure Tastr.draw;
begin
x3:=xp3+xc;
y3:=yc;
image.canvas.moveto(x3,y3);
image.canvas.Arc(X3,Y3,X3+60,Y3+60,X3+30,Y3, X3,Y3+30);
image.canvas.moveto(x3,y3-60);
image.canvas.Arc(X3,Y3-60, X3+60,Y3, X3,Y3-30, X3+30,Y3);
image.canvas.moveto(x3-60,y3-60);
image.canvas.Arc(X3-60,Y3-60, X3,Y3, X3-30,Y3, X3,Y3-30);
image.canvas.moveto(x3-60,y3);
image.canvas.Arc(X3-60,Y3, X3,Y3+60, X3,Y3+30, X3-30,Y3);
end;
{$R *.dfm}
procedure Tform1.Button1Click ;
var romb:tromb;
treug:ttreug;
astr:tastr;
figure:tfigure;
begin
xp:=30;
xp2:= 30;
xp3:= 30;
yp:=30;
yp3:= 30;
yp2:= 30;
shx1:=-1;
shy1:=1;
shx2:=1;
shy2:=-1;
shx3:=1;
shy3:=1;
Move:=true;
Image1.Canvas.Pen.Color:=clBlack;
treug:=ttreug.Create(form1.image1,150,200,60);
romb:=tromb.Create(form1.image1,250,200,60);
astr:=tastr.Create(form1.image1,350,200,60);
treug.draw;
romb.draw;
astr.draw;
repeat
Image1.Canvas.Pen.Color:=clWhite;
treug.draw;
romb.draw;
astr.draw;
Image1.Canvas.Pen.Color:=clBlack;
treug.sdvig;
treug.draw;
romb.sdvig;
romb.draw;
astr.sdvig;
astr.draw;
sleep(10);
application.ProcessMessages;
q:=0;
until not Move;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
move:=false;
close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Canvas.Brush.Color:=clwhite;
end;
end.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.