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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2007, 19:01   #1
Ivanich
Пользователь
 
Регистрация: 08.12.2007
Сообщений: 48
По умолчанию Помогите сделать движение объектов в Pascal

Люди помогите зделать дижение или анимацию как правильно объёктов вот есть программный код на сам объёкт.Подскажите плизз

Код:
{---Unit TCircle---}
unit Tcirclee;
interface
uses graph,crt,Tpointt;
type TCircle = object(TPoint)
   r:integer;
constructor Init(a,b,rad : integer);
procedure SwitchOn;
procedure SwitchOff;
procedure move(dx,dy:integer);
 end;

var c:TCircle;

implementation
constructor TCircle.Init(a,b,rad : integer);
   begin
   inherited
   init(a,b);
   r:=rad;
 end;
procedure TCircle.SwitchOn;
   begin
   visible:= true;
   circle(x,y,r);
 end;
procedure TCircle.SwitchOff;
   begin
   visible:=false;
 end;
procedure TCircle.move(dx,dy:integer);
   begin
   x:=x+dx;
   y:=y+dy;
 end;

 begin

 end.
Ivanich вне форума Ответить с цитированием
Старый 09.12.2007, 19:11   #2
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

Это у вас модуль... Могу поделиться программой, движение точки, квадрата, круга, сделано через объекты:
OBJECT_1.rar
Там легко убрать лишнее и добавить нужное
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Старый 09.12.2007, 19:24   #3
Ivanich
Пользователь
 
Регистрация: 08.12.2007
Сообщений: 48
По умолчанию

Что то он не запускается вроде компилируется нормально а запускаться не хочет.

Все Все зделал ну спасибо за исходничек теперь помучаюсь и воткну движения в свою прогу
Ivanich вне форума Ответить с цитированием
Старый 09.12.2007, 19:30   #4
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

Попробую угадать... Программа работает с графикой поэтому вам нужно добавить два файла egavga.bgi и graph.tpu в папку Bin или в тот же каталог где находиться программа или лучше туда и туда(на всякий случай)...
Эти файлы вы можете найти в папках Bgi и Units соответственно
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Старый 09.12.2007, 19:45   #5
Ivanich
Пользователь
 
Регистрация: 08.12.2007
Сообщений: 48
По умолчанию

А обязательно должна быть процедура move без неё движение не получится или как ?
Ivanich вне форума Ответить с цитированием
Старый 09.12.2007, 19:50   #6
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

У меня она называеться Sdvig... Но смысл не в названии процедуры, а в том, что она делает и на что она влияет!
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Старый 09.12.2007, 19:50   #7
Ivanich
Пользователь
 
Регистрация: 08.12.2007
Сообщений: 48
По умолчанию

Нримерно так она должна выглядеть
procedure point.move(dx,dy:integer);
begin
x:=x+dx;
y:=y+dy;
end;
Ivanich вне форума Ответить с цитированием
Старый 09.12.2007, 19:55   #8
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

Урезал... Если хочешь поменяй имена процедур, но смысл не измениться...
Код:
program object_lab1;
uses crt,graph;
type figura=object
x:integer;
y:integer;
r:integer;
procedure sdvig(xx,yy:integer);
procedure creat(xx,yy,rr:integer);
end;
krug=object(figura)
procedure show;
procedure delete;
end;
procedure figura.creat(xx,yy,rr:integer);
begin
x:=xx;
y:=yy;
r:=rr;
end;
procedure figura.sdvig(xx,yy:integer);
begin
x:=xx;
y:=yy;
end;
procedure krug.delete;
begin
setcolor(0);
circle(x,y,r);
end;

procedure krug.show;
begin
setcolor(14);
circle(x,y,r);
end;

var
k:krug;
f:figura;
gm,gd,i,j:integer;
begin
initgraph(gm,gd,'');
setcolor(yellow);
outtextxy(280,10,'press a key');
i:=0;
k.creat(320,240,10);
k.show;
readkey;
repeat
k.sdvig(320+i,240+i);
k.delete;
i:=i+1;
setcolor(14);
k.sdvig(320+i,240+i);
k.show;
delay(1000);
until i>100;
i:=10;
readkey;
end.
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Старый 09.12.2007, 20:05   #9
Ivanich
Пользователь
 
Регистрация: 08.12.2007
Сообщений: 48
По умолчанию

k.creat(320,240,10); это что я что то не могу понять объясните
Ivanich вне форума Ответить с цитированием
Старый 09.12.2007, 20:14   #10
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

Цитата:
k.creat(320,240,10); это что я что то не могу понять объясните
В данной строке мы передаем начальные координаты и радиус окружности.
Сначала мы создаем объект Figura -это родительский объект
Потом создаем дочерний объект Krug - дочерний объект.
Потом объявляеться переменная (k:Krug и работа с объектами происходит неосредственно через эту переменную.
Мой совет вам, скачать хороший учебник по Паскалю и прочитать там общие понятия об объектах(из меня учитель очень плохой)...
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с заданиями в PASCAL LLIypLLIyH Помощь студентам 8 11.06.2008 11:51
Помогите рассчитать положение и движение точки N на отрезку DK Stark[SG!] Помощь студентам 8 14.12.2007 10:08
помогите сделать движение на нажатие кнопки shepelin Общие вопросы Delphi 1 11.12.2007 10:11
Помогите добавить свой цвет в инспектор объектов!!! Denisich Общие вопросы Delphi 1 28.06.2007 23:03
Движение Mickle Общие вопросы Delphi 5 19.04.2007 23:24