Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 10 объектов, одновременно перемещать 
:(
    Опции темы
PascalNoob
Дата 24.3.2008, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 24.3.2008

Репутация: нет
Всего: нет



Нужно одновременно перемещать 8 кругов по экрану
у меня только получилось чтобы перемещались по очереди
ps каждый объект должен быть в массиве
Код

uses crt,graph;
type
  Tpoint = object
  x,y:integer;
  color:integer;
  procedure move(dx,dy:integer);
  procedure hide;[quote]


  procedure show;
end;
procedure Tpoint.hide;
begin
 setcolor(getbkcolor); circle(x, y, 3);
end;

procedure Tpoint.move(dx,dy:integer);
begin
x:=dx;
y := 100*dy div 2 + trunc(sin(10 * pi * x / getmaxx) * (getmaxy div 20));
end;



procedure Tpoint.show;
begin
   setcolor(lightred);
        circle(x, y,3);
end;
var
p2:array[1..8]of Tpoint;
x,y,ckl,ckl2:integer;
GraphD,GraphM:integer;
begin
GraphD:= detect;
initgraph(GraphD,GraphM,'C:\');



       readln;
       for ckl2:=1 to 8 do begin
         for ckl:=1 to getmaxx do begin
         p2[ckl2].move(ckl,ckl2);
         p2[ckl2].show;
         delay(3);
         {p2[ckl2].hide;}
         end;
        end;
        readln;

   end.


readln;
end.

Подскажите что не так

PM MAIL   Вверх
Alix
Дата 24.3.2008, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: нет
Всего: 23



Код
       for ckl2:=1 to 8 do begin
         for ckl:=1 to getmaxx do begin
           p2[ckl2].move(ckl,ckl2);
           p2[ckl2].show;
           delay(3);
         end;
         { сюда }
        end;

1. Циклы поменять местами
2. Переместить delay куда указано в комменте, т.е. между первым и вторым циклом.


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
PascalNoob
Дата 24.3.2008, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 24.3.2008

Репутация: нет
Всего: нет



поставил
 p2[ckl2].hide;


и теперь вообще криво работает,а чем проблемма((

for ckl:=1 to getmaxx do begin
     for ckl2:=1 to 8 do begin
     p2[ckl2].move(ckl,ckl2);
     p2[ckl2].show;
     p2[ckl2].hide;
     end;
delay(3);
 end;

Это сообщение отредактировал(а) PascalNoob - 24.3.2008, 19:16
PM MAIL   Вверх
ILyAHA
Дата 24.3.2008, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гламурный хакер
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 30.3.2007
Где: Ярославская обл. г.Рыбинск

Репутация: нет
Всего: 3



Alix, а терь я первый smile 

Код

   p2[ckl2].show;
     p2[ckl2].hide;


Ты сначала нарисовал, и сразу стёр...

Добавлено через 1 минуту и 6 секунд
Поставь p2[ckl2].hide;
перед p2[ckl2].move(ckl,ckl2);
--------------------
<sсriрt>alert('xss')</sсriрt>
PM MAIL   Вверх
Alix
Дата 24.3.2008, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: нет
Всего: 23



Код
for ckl:=1 to getmaxx do begin
  for ckl2:=1 to 8 do begin
    p2[ckl2].move(ckl,ckl2);
    p2[ckl2].show;
  end;
  delay(3);
  for ckl2:=1 to 8 do begin
    p2[ckl2].hide;
  end;
end;



--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
PascalNoob
Дата 24.3.2008, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 24.3.2008

Репутация: нет
Всего: нет



пасиба) smile

Добавлено через 9 минут и 6 секунд
и ещё маленький вопрос)
если не сложно,то обясните на словах,как сделать чтобы скорость перемещения каждого кружка была разной...
Понимаю что надо задержу разную поставить
Но как это сделать для каждого кружка?0_o

Это сообщение отредактировал(а) PascalNoob - 24.3.2008, 19:24
PM MAIL   Вверх
ILyAHA
Дата 25.3.2008, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гламурный хакер
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 30.3.2007
Где: Ярославская обл. г.Рыбинск

Репутация: нет
Всего: 3



В обекте tPoint добавляеш переменную отвечающую за задержку. Пишеш метод для инициализации этой переменной, и её например уменьшения. В методе Move изменяеш эту переменну, посредством метода уменьшения. И если например переменная равна 0, то перемещаеш объект и устанавливаеш новое значение переменной. Иначе просто уменьшаеш значение переменной...
--------------------
<sсriрt>alert('xss')</sсriрt>
PM MAIL   Вверх
volvo877
Дата 25.3.2008, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



ILyAHA, "когда ты говоришь, впечатление такое, что ты бредишь" (С) "Иван Васильевич меняет профессию" Или ты все хочешь отвечать первым? Так здесь далеко не формула 1, учти это на будущее... скорость ответа никому не нужна...


Цитата(ILyAHA @  25.3.2008,  13:08 Найти цитируемый пост)
В обекте tPoint добавляеш переменную отвечающую за задержку.
Все... Этого достаточно. Больше ничего из того, что ты сказал, делать не надо:

Код

for ckl:=1 to getmaxx do begin
  for ckl2:=1 to 8 do 
    with p2[ckl2] do begin
      move(ckl,ckl2);
      show;
      Delay(m_delay); { <--- Задержка для конкретного экземпляра }
      hide;
    end;
end;

PM MAIL   Вверх
Alix
Дата 25.3.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: нет
Всего: 23



Я бы сделал так:
Код
      Delay(m_delay); { <--- Задержка для конкретного экземпляра }
      hide;
      move(ckl,ckl2);
      show;
Тогда, во-первых, это будет задержка именно для данного объекта, а не для следующего. И во-вторых, он стирается только перед тем, как перемещается, а в остальное время, разумеется, остается на экране.


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
volvo877
Дата 25.3.2008, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Alix @  25.3.2008,  14:57 Найти цитируемый пост)
Я бы сделал так:
Чего ж ты тремя постами выше этого не сделал? А? Я взял за основу именно твой код, значит, там все было нормально, а тут вдруг - неправильно? Интересная политика... 
PM MAIL   Вверх
Alix
Дата 25.3.2008, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: нет
Всего: 23



А думать то надо? А то Вы только других, как видно, ругаете.
В моем коде выше: а) различной задержки при рисовании объектов нет, потому что тогда про это спрошено не было и б) hide делался только после того как все объекты были отображены - разница есть по сравнению с тем, что получилось у Вас от бездумного объединения циклов.
Что касается того, как я скрывал объекты, да был не прав, у ILyAHA лучше - хайд перед мувом.


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.1047 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.