Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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


Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы
Старый 15.04.2007, 19:20   #1
Инна
 
Регистрация: 15.04.2007
Сообщений: 9
По умолчанию

Ребята, пожалуйста, нужна помощь! Задача: На форме расположена кнопка. При нажатии на неё она начинает двигаться по окружности. При повторном нажатии останавливается.



Дорогие мужчины, ну помогите пожалуйста... не получается у меня ладить с компьютером.....А информатика в диплом....

Последний раз редактировалось RSLoader; 23.04.2007 в 14:49.
Инна вне форума
Старый 15.04.2007, 19:27   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 16,450
По умолчанию

Вообще есть поиск на форуме!

вот одна из решённых задач

http://programmersforum.ru/showthread.php?t=2946
Alar вне форума
Старый 15.04.2007, 19:58   #3
Инна
 
Регистрация: 15.04.2007
Сообщений: 9
По умолчанию

Поспешила с радостью......не так-то всё просто......Ну ничего не получается...сижу за компом уже целый день...толку нет....

Только вот всё равно не получается.....:'((((((

А поиск не выдаёт ничего....

Последний раз редактировалось RSLoader; 24.04.2007 в 12:49.
Инна вне форума
Старый 15.04.2007, 21:32   #4
SteelRat
Брэйнфакер Про
Пользователь
 
Аватар для SteelRat
 
Регистрация: 21.02.2007
Сообщений: 51
По умолчанию

Не то ищешь. Тебе надо алгоритм рисования окружности. Только вместо рисования точки ты меняешь координаты кнопки.
Вот я навскидку, пальцем в нёбо типа, нашел процедуру рисования круга. Надо только обработать напильником. Тщательно.
Цитата:
Procedure Circle(x,y,rr:integer);
var xi,yi,r,di,lim,s,ss:integer;
label 1,2,3,4,10,20,30;
Begin
r:=rr;
xi:=0; yi:=r; di:=2*(1-r); lim:=0;
1: SetPixel(xi+x,yi+y);
SetPixel(xi+x,-yi+y);
SetPixel(-xi+x,yi+y);
SetPixel(-xi+x,-yi+y);
if yi<limthen goto 4;
if di<0then goto 2;
if di>0then goto 3;
if di=0 then goto 20;
2: s:=2*di+2*yi-1;
if s<=0then goto 10;
if s>0then goto 20;
3: s:=2*di+2*xi-1;
if s<=0then goto 20;
if s>0then goto 30;
10:xi:=xi+1;
di:=di+2*xi+1;
goto 1;
20:xi:=xi+1;
yi:=yi-1;
di:=di+2*xi-2*yi+2;
goto 1;
30:yi:=yi-1;
di:=di-2*yi+1;
goto 1;4:
end;

PS Хотя Alar почти на то же самое ссылку дал... =)

Последний раз редактировалось SteelRat; 15.04.2007 в 21:35. Причина: Мда
SteelRat вне форума
Старый 15.04.2007, 21:46   #5
Инна
 
Регистрация: 15.04.2007
Сообщений: 9
По умолчанию

Пасиб...Попробую.....Хотя наверное вряд ли получится...Я алгоритм сам прекрасно понимаю, вот только воспроизвести сложно.....Но всё равно спасибо огромное.

Как всё же сложно быть женщиной...Ох-ох-ох....
Инна вне форума
Старый 15.04.2007, 22:37   #6
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

По это процедуре кнопочка вращаеться, но в вашем случае надо два баттона, один запускает цикл вращения второго и делаеться невидимым. А второй останавливает вращение и делает видимым первый.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var t, x, y : integer;
begin
t := 1;
x := Form1.Button1.Top;
y := Form1.Button1.Left;
repeat
x := round (50*sin(t));
y := round (50*cos(t));
sleep (100);
Form1.Button1.Top := Form1.Button1.Top + x;
Form1.Button1.Left := Form1.Button1.Left + y;
t := t + 1;
until t = 100;
end;
Грубая проца, но пока нет времени на большее, если чего доработаю.

Последний раз редактировалось merax; 15.04.2007 в 22:57.
merax вне форума
Старый 16.04.2007, 08:06   #7
Инна
 
Регистрация: 15.04.2007
Сообщений: 9
По умолчанию

Цитата:
Сообщение от merax Посмотреть сообщение
По это процедуре кнопочка вращаеться, но в вашем случае надо два баттона, один запускает цикл вращения второго и делаеться невидимым. А второй останавливает вращение и делает видимым первый.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var t, x, y : integer;
begin
t := 1;
x := Form1.Button1.Top;
y := Form1.Button1.Left;
repeat
x := round (50*sin(t));
y := round (50*cos(t));
sleep (100);
Form1.Button1.Top := Form1.Button1.Top + x;
Form1.Button1.Left := Form1.Button1.Left + y;
t := t + 1;
until t = 100;
end;
Грубая проца, но пока нет времени на большее, если чего доработаю.
Спасибо огромное! Вы меня спасли....
Инна вне форума
Старый 16.04.2007, 20:42   #8
Инна
 
Регистрация: 15.04.2007
Сообщений: 9
По умолчанию Правка

А можно сделать так, чтобы кнопочка медленней двигалась?
Инна вне форума
Старый 16.04.2007, 21:32   #9
Malice
Пользователь
 
Регистрация: 28.01.2007
Сообщений: 27
По умолчанию

Код:
 
x := round (50*sin(t/10));
y := round (50*cos(t/10));
Ку ?
Malice вне форума
Старый 17.04.2007, 05:33   #10
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Цитата:
Сообщение от Инна Посмотреть сообщение
А можно сделать так, чтобы кнопочка медленней двигалась?
Sleep (100); - это код паузы, изменяй его в большую сторону.
merax вне форума
Закрытая тема
Купить рекламу на форуме 20000 рублей в месяц
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение фигуры по окружности &RiU Помощь студентам 3 31.10.2009 20:39
Движение окружности и отрезка. Ev@ngel Компоненты Delphi 0 18.04.2008 21:16
помогите сделать движение на нажатие кнопки shepelin Общие вопросы Delphi 1 11.12.2007 10:11
Движение по окружности Mickle Общие вопросы Delphi 3 13.04.2007 15:24
Анимация. Движение по окружности. Albenous Общие вопросы Delphi 1 11.04.2007 13:57


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS