Отчет по Теме 18 (956703)
Текст из файла
Отчет по Теме 18
“ Графический режим. Наследование. Полиморфизм.”
Малышев Егор АК5-21
Условие:
Разработать программу, содержащую описание трех графических объектов:
квадрат, правильный шестиугольник, правильный восьмиугольник.
Реализуя механизм полиморфизма, привести объекты в одновременное вертикальное движение по экрану с отражением от его границ .
Текст программы:
unit N18;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Figure;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x:integer=10;
x1:integer=90;
x2:integer=170;
y:integer=390;
dy:integer=1;
Kvad:Tkvadrat;
Shest:Tshest;
Vosm:Tvosm;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=not(timer1.enabled);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Kvad:= Tkvadrat.Create;
Shest:=Tshest.Create;
Vosm:=TVosm.Create;
Kvad.Canvas:= Form1.Image1.Canvas;
Shest.Canvas:=Form1.Image1.Canvas;
Vosm.Canvas:= Form1.Image1.Canvas;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if ((y-60)<=0) or (y>=400) then begin
dy:=-dy;
end;
y:=y-dy;
PatBlt(Image1.Canvas.Handle,0,0,Image1.Width,Image1.Height,WHITENESS);
//image1.Canvas.Brush.Color:=clwhite;
//image1.Canvas.Rectangle(0,0,image1.Width,image1.Height);
Kvad.Draw(x,y,-dy);
Shest.Draw(x1,y,-dy);
Vosm.Draw(x2,y,-dy);
end;
end.
unit Figure;
interface Uses graphics,ExtCtrls,stdctrls,windows;
Type
TKvadrat=class
Color:tcolor;
Canvas:Tcanvas;
procedure Draw(x,y,dy:integer);virtual;
end;
TShest=class (TKvadrat)
procedure Draw(x,y,dy:integer);override;
end;
TVosm=class (Tkvadrat)
procedure Draw(x,y,dy:integer);override;
end;
implementation
procedure Tkvadrat.Draw;
var i:integer;
begin
{self.Canvas.Pen.Color:=clwhite;
if dy>0 then
for i := 0 to 2 do begin
self.canvas.MoveTo(x,y-i);
self.Canvas.lineto(x,y-60-i);
self.Canvas.lineto(x+60,y-60-i);
self.Canvas.lineto(x+60,y-i);
self.Canvas.lineto(x,y-i);
end else
for i := 0 downto -2 do begin
self.canvas.MoveTo(x,y-i);
self.Canvas.lineto(x,y-60-i);
self.Canvas.lineto(x+60,y-60-i);
self.Canvas.lineto(x+60,y-i);
self.Canvas.lineto(x,y-i);
end; }
self.Canvas.Pen.Color:=clblack;
y:=y+dy;
self.canvas.MoveTo(x,y);
self.Canvas.lineto(x,y-60);
self.Canvas.lineto(x+60,y-60);
self.Canvas.lineto(x+60,y);
self.Canvas.lineto(x,y);
end;
Procedure Tshest.Draw;
var i:integer;
begin
{self.Canvas.Pen.Color:=clwhite;
if dy>0 then
for i := 0 to 2 do begin
self.canvas.MoveTo(x,y-30-i);
self.Canvas.lineto(x+15,round(y-30-sqrt(3)*15)-i);
self.Canvas.lineto(x+45,round(y-30-sqrt(3)*15)-i);
self.Canvas.lineto(x+60,y-30-i);
self.Canvas.lineto(x+45,round(y-30+sqrt(3)*15)-i);
self.Canvas.lineto(x+15,round(y-30+sqrt(3)*15)-i);
self.Canvas.lineto(x,y-30-i);
end else
for i := 0 downto -2 do begin
self.canvas.MoveTo(x,y-30-i);
self.Canvas.lineto(x+15,round(y-30-sqrt(3)*15)-i);
self.Canvas.lineto(x+45,round(y-30-sqrt(3)*15)-i);
self.Canvas.lineto(x+60,y-30-i);
self.Canvas.lineto(x+45,round(y-30+sqrt(3)*15)-i);
self.Canvas.lineto(x+15,round(y-30+sqrt(3)*15)-i);
self.Canvas.lineto(x,y-30-i);
end; }
// self.Canvas.Polyline(x,y-30,x+15,round(y-30-sqrt(3)*15),x+45,round(y-30-sqrt(3)*15),x+60,y-30,x+45,round(y-30+sqrt(3)*15),x+15,round(y-30+sqrt(3)*15),x,y-30);
self.Canvas.Pen.Color:=clblack;
y:=y+dy;
self.canvas.MoveTo(x,y-30);
self.Canvas.lineto(x+15,round(y-30-sqrt(3)*15));
self.Canvas.lineto(x+45,round(y-30-sqrt(3)*15));
self.Canvas.lineto(x+60,y-30);
self.Canvas.lineto(x+45,round(y-30+sqrt(3)*15));
self.Canvas.lineto(x+15,round(y-30+sqrt(3)*15));
self.Canvas.lineto(x,y-30);
end;
Procedure Tvosm.Draw;
var i:integer;
begin
{self.Canvas.Pen.Color:=clwhite;
if dy>0 then
for i := 0 to 2 do begin
self.canvas.MoveTo(x,y-15-i);
self.Canvas.lineto(x,y-45-i);
self.Canvas.lineto(x+15,y-60-i);
self.Canvas.lineto(x+45,y-60-i);
self.Canvas.lineto(x+60,y-45-i);
self.Canvas.lineto(x+60,y-15-i);
self.Canvas.lineto(x+45,y-i);
self.Canvas.lineto(x+15,y-i);
self.Canvas.lineto(x,y-15-i);
end else
for i := 0 downto -2 do begin
self.canvas.MoveTo(x,y-15-i);
self.Canvas.lineto(x,y-45-i);
self.Canvas.lineto(x+15,y-60-i);
self.Canvas.lineto(x+45,y-60-i);
self.Canvas.lineto(x+60,y-45-i);
self.Canvas.lineto(x+60,y-15-i);
self.Canvas.lineto(x+45,y-i);
self.Canvas.lineto(x+15,y-i);
self.Canvas.lineto(x,y-15-i);
end;
PatBlt(Image1.Canvas.Handle,0,0,Image1.Width,Image1.Height,WHITENESS);
}
// self.Canvas.Polyline(x,y-15,x,y-45,x+15,y-60,x+45,y-60,x+60,y-45,x+60,y-15,x+45,y,x+15,y,x,y-15);
self.Canvas.Pen.Color:=clblack;
y:=y+dy;
self.canvas.MoveTo(x,y-15);
self.Canvas.lineto(x,y-45);
self.Canvas.lineto(x+15,y-60);
self.Canvas.lineto(x+45,y-60);
self.Canvas.lineto(x+60,y-45);
self.Canvas.lineto(x+60,y-15);
self.Canvas.lineto(x+45,y);
self.Canvas.lineto(x+15,y);
self.Canvas.lineto(x,y-15);
end;
end.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.