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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2009, 17:26   #1
Shyric
 
Регистрация: 10.04.2009
Сообщений: 3
Восклицание Задачка

Вообщем надо сделать такую штуку в Borland Delphi, на паскале, чтобы фигурка двигалась в ту точку куда тыкает мышка, двигалась не резко, а именно ехала туда вот пример решения программы сложным вариантом
Код:
xd,yd,ro,phi,dl.xn.yn:real;
onmousedown...
begin 
xn:=Shape1.Left+(Shape.Width div 2);
yn:=Shape1.Top+(Shape.height div 2);
If abs(x-xn)<0,0000000001 then phi:=Pi/2
Else
 Phi:=arctan(abs(y-yn)/abs(x-xn);
If y>yn then phi:=-phi
if x<xn then phi:=Pi-Phi;
Dl:=sqrt(sqr(xn-x)+sqr(yn-y));
ro:=0;
timer1:=true;
Proc.... Timer1.timer....
Begin
ro:=ro+2
xd=ro*cos(phi)+xn;
yd:=-ro*sin(phi)+yn;
shape1.left:=round(xd)-(shape1.width div 2);
shape1.top:=round(yd)-(shape1.height div 2);
If Ro>=dl then timer1.enabled:=faulse;
куча ендов)))
вообщем как то так она будет пахать, я тут как бы не обращал внимание на орфографию, что и на какие процедуры пометил)
Нужно тоже самое но в более простом варианте)) Помогите пожалуйста, можно скинуть Сам Проект с этой прогой, ну или код, Заранее благодарен
Shyric вне форума Ответить с цитированием
Старый 10.04.2009, 21:22   #2
Shyric
 
Регистрация: 10.04.2009
Сообщений: 3
По умолчанию

ау)) Ответьте))
Shyric вне форума Ответить с цитированием
Старый 10.04.2009, 22:07   #3
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Это и есть простой вариант.
Разве что (xn, yn) сместить в левый верхний угол, чтобы в цикле не вычитать половину размера.
alexBlack вне форума Ответить с цитированием
Старый 10.04.2009, 22:52   #4
Shyric
 
Регистрация: 10.04.2009
Сообщений: 3
По умолчанию

неет есть проще способ, короче чтобы он высщитывал путь не таким мудреным способом, грубо говоря чтобы он сразу напрямую к точке ехал по прямой)) я хз как объяснить)) Вообщем именно (я так понял) математически проще)
Shyric вне форума Ответить с цитированием
Старый 11.04.2009, 08:13   #5
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Вы имеете в виду без cos/sin ?
Ну, можно просто разделить расстояние между точками по каждой координате на какое-то количество участков (количество вызовов обработчика таймера, за которое точка достигнет пункта назначения)

dx = (x - xn) / k
dy = (y - yn) / k

а в цикле только добавлять эту разницу
alexBlack вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачка на C++ Biker Помощь студентам 6 09.03.2009 20:51
Задачка. Cubaholic Общие вопросы Delphi 4 28.12.2008 20:34
Задачка! Mr.User Помощь студентам 8 25.11.2007 05:24