Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2011, 22:11   #1
Человек Панда
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 75
По умолчанию Delphi.Cоздании движущихся сооюражений с использованием полиморфизма.

Здравствуйте всем.Пишу программу,в которой должно осуществляться колебательное движение букв латинского алфавита I H T. Почему не происходит передача в unit массивов а b с типа tpoint(координаты посчитаны мной,в процедуре draw происходит рисование)?Вот текст программы:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
img1: TImage;
btn1: TButton;
btn2: TButton;
procedure form1activate(sender:tobject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);

end;

var
Form1: TForm1;

implementation
uses unit2;
type mas1=array [1..5] of tpoint;
var
I:tI; T:tT; H:tH;
moving:boolean=true;
p:single=0.0; q:single=2.0; r:single=3.0;
a: mas1=((X:60;y:150),(x:80;y:150),(x: 100;y:150),
(x:60;Y:100),(x:100;y:100));
b: mas1=((X:100;y:150),(x:180;y:150),( x:200;y:150),
(x:0;Y:0),(x:0;y:0));
c: mas1=((X:300;y:120),(x:300;y:80),(x :350;y:120),
(x:350;Y:100),(x:350;y:80));
{$R *.dfm}
procedure tform1.form1activate;
begin
img1.Canvas.Brush.Color:=clwhite;
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.btn2Click(Sender: TObject);
var cos1,cos2,cos3:extended;
begin
cos1:=3;
cos2:=3.4;
cos3:=9;
i:=ti.create(80,100,a,5,cos1,img1);
t:=tt.create(180,100,b,3,cos2,img1) ;
h:=th.create(300,100,c,5,cos3,img1) ;
repeat
i.move(p);
t.move(q);
t.move(r);
p:=p+0.001;
q:=q+0.051;
r:=r+0.077;
application.processmessages;
until not moving;
end;

initialization
finalization
i.Free;
h.Free;
t.Free;
end.

unit Unit2;

interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type mas2=array [1..5] of tpoint;
tfigure=class
xc,yc:integer;
mast:mas2;
kolt:integer;
mast2:mas2;
w:extended;
image:timage;
procedure draw;virtual;abstract;
procedure rel(mast2:mas2);virtual;
constructor create(x,y:integer;var a:mas2;
akol:integer;aw:extended;aimage:tim age);
procedure move(t:single);
end;
tI=class(tfigure)
procedure draw;override;
end;
tT=class(tfigure)
procedure draw;override;
end;
tH=class(tfigure)
procedure draw;override;
end;

implementation
constructor tfigure.create;
var i:integer;
begin
xc:=x;
yc:=y;
kolt:=akol;
for i:=1 to kolt do
begin
mast[i]:=a[i];
end;
w:=aw;
image:=aimage;
end;
procedure tfigure.rel;
var i:integer;
begin
for i:=1 to kolt do
begin
mast2[i].X:=round((mast[i].x-xc)*cos(w)-yc*sin(w)+xc);
mast2[i].Y:=round((mast[i].Y-yc)*cos(w)-(mast[i].X-xc)*sin(w+yc));
end;

end;
procedure tfigure.move;
begin
image.Canvas.Pen.Color:=clwhite;
draw;
image.Canvas.Pen.Color:=clblack;
rel(mast);
draw;
end;

procedure ti.draw;
begin
image.Canvas.MoveTo(mast[1].x,mast[1].y);
image.Canvas.LineTo(mast[3].x,mast[3].y);
image.Canvas.MoveTo(mast[4].x,mast[4].y);
image.Canvas.LineTo(mast[5].x,mast[5].y);
image.Canvas.MoveTo(80,100);
image.Canvas.lineto(mast[2].x,mast[2].Y);

end;
procedure tt.draw;
begin
image.Canvas.MoveTo(mast[1].x,mast[1].y);
image.Canvas.LineTo(mast[3].x,mast[3].y);
image.Canvas.MoveTo(mast[2].x,mast[2].y);
image.Canvas.LineTo(180,100);
end;
procedure th.draw;
begin
image.Canvas.MoveTo(mast[1].x,mast[1].y);
image.Canvas.LineTo(mast[2].x,mast[2].y);
image.Canvas.MoveTo(mast[3].x,mast[3].y);
image.Canvas.LineTo(mast[5].x,mast[5].y);
image.Canvas.LineTo(mast[4].x,mast[4].y);
image.Canvas.MoveTo(300,100);
end;
end.
Человек Панда вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы с использованием полиморфизма Patrool Помощь студентам 0 09.12.2010 00:35
Cоздании блока на CSS alex774 HTML и CSS 1 18.01.2010 17:32
Принципы реализации полиморфизма Nostalgia Помощь студентам 1 05.01.2010 11:49
Отслеживание движущихся объектов Impuls1989 Общие вопросы C/C++ 2 29.06.2009 00:21
Особенности программированя движущихся объектов DeKot Gamedev - cоздание игр: Unity, OpenGL, DirectX 12 16.02.2009 08:22