IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Модуль GRAPH., Движение объектов.
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Добрый вечер.
Вот задача: нарисовать и анимировать неск. объектов. (ну вообще-то задача намного длиннее, но не суть...).
Код программы:
Program Lab_09;
Uses
GRAPH, CRT;
Type
TPoint=object
x , y : Integer;
ox, oy : Integer;
color : Word;
R : Integer;
alpha : Real;
step : Real;
Procedure Show;
Procedure Hide;
Procedure Move;
end;

Procedure TPoint.Show;
Begin
putPixel (x, y, color);
end;

Procedure TPoint.Hide;
Begin
putPixel (x, y, black);
end;

Procedure TPoint.Move;
Begin
Hide;
if (abs(alpha)>=180) or (abs(alpha)<=0) then step:=step*(-1);
alpha:=alpha+step;
x:=round (cos(alpha*Pi/180)*R)+ox;
y:=round (sin(alpha*Pi/180)*R)+oy;
Show;
end;

Var
P1, P2, P3, C1, C2 : TPoint;
a : Integer;
grDr, grMode : Integer;
Begin
grDr:=detect;
grMode:=0;
InitGraph (grDr, grMode, '');

Line (000,240,640,240);
Line (214,000,214,240);
Line (426,000,426,240);
Line (320,240,320,480);
Rectangle (1,1,639,479);

P1.R:=75;
P1.ox:=110; P1.oy:=120;
P1.step:=0.5;
P1.color:=yellow;
P1.Show;

P2.R:=95;
P2.ox:=320; P2.oy:=120;
P2.step:=-0.5;
P2.color:=green;
P2.Show;

P3.R:=55;
P3.ox:=530; P3.oy:=120;
P3.step:=0.3;
P3.color:=white;
P3.Show;

Repeat
P1.Move;
P2.Move;
P3.Move;
Delay (1000);
Until KeyPressed;

closeGraph;
End.

Скачать исходник можно здесь: http://narod.ru/disk/11290000/LAB_09.PAS

Проблема заключается в том, что траектория движение точек - дуга. Программа, после каждого перемещения смотрит: не достигла ли точка 0 или 180 градусов. И если точка доехала до указанных углов, то начинается обратное действие. Всё вроде норм. Только последний объект почему-то "разворачивается" только при 180 градусах, а при 0 - нет. Скажите, в чём ошибка?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 9:41
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name