Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Независимое перемещение предметов в паскале

Автор: Slave 22.05.2007 22:10

Суть в том что есть три квадрата на экране, которые перемещаются по прямым с разными скоростями. Вопрос в следующем: как совместить одновременно перемещение трех предметов?? Как я понимаю перемещение одного предмета будет производиться с помощью delay, но если поставить цикл для трех квадратов, то сначала переместиться первый потом второй, потом третий.
Как быть??

Автор: мисс_граффити 22.05.2007 22:23

for i:=1 to n do
begin
{переместил первый
переместил второй
переместил третий}
delay(сколько тебе нужно);
end;

ты про это?

Автор: Sto 22.05.2007 22:23

Можно сделать и в одном цыкле.

Автор: Гость 22.05.2007 22:40

Мне нужно, чтоб скорость была разная, а так как написали то получается что они перемещаются с одинаковой скоростью

Автор: volvo 22.05.2007 22:42

Цитата
получается что они перемещаются с одинаковой скоростью

Кто тебе сказал? Это смотря, как ты рассчитываешь новую координату...

Автор: Slave 22.05.2007 22:43

То беж задержки не будет между квадратами. Нужно чтоб скорость задавалась случайно и квадраты двигались с разными скоростями соответственно. Как это реализовать??

Автор: Slave 22.05.2007 22:45

[quote name='volvo' date='22.05.2007 18:42' post='103654']
Кто тебе сказал? Это смотря, как ты рассчитываешь новую координату...
Нужно чтоб квадраты проходили одинаковые координаты(по х) Только чтоб попадали в эти координаты в разное время

Автор: volvo 22.05.2007 22:54

Вот набросок:

uses crt, graph;
const
size = 50;

var
d, m: integer;
x, y, v: array[1 .. 3] of integer;
i: integer;

begin
initgraph(d, m, '');

for i := 1 to 3 do begin
x[i] := 0; y[i] := (i - 1)*(10 + size);
v[i] := random(12); { <--- скорость задается случайно? Случайно... }
end;


repeat

cleardevice;
for i := 1 to 3 do begin
rectangle(x[i], y[i], x[i]+size, y[i] + size);
x[i] := x[i] + v[i]; { квадраты движутся с разными скоростями? с разными... }
end;
delay(50);

until keypressed;
closegraph;

end.


Автор: Гость 22.05.2007 23:11

Чет у меня вообще не движутся(( я так понимаю они не прохоходят одинаковые координаты

Автор: volvo 22.05.2007 23:18

Цитата
Чет у меня вообще не движутся((
Если б не двигались, я бы не выложил! dry.gif Тогда пиши сам...

Автор: Slave 22.05.2007 23:29

Да лан)). Мне помощь нужна yes2.gif!! , мне нужно чтоб они двигались по одинаковым координатам, но с разными скоростями