begin driver:=detect; mode:=detect; initgraph(driver,mode,'c:\bp\bgi'); moveto(400,280); for i:=1 to 200 do begin moverel(1,1); setcolor(3); samolet; Delay(3000); setcolor(0); samolet; end;
readln; end.
Автор: volvo 18.10.2006 0:47
Чтобы ОНО "летело" по синусоиде - не привязывайся к текущим координатам... Сделай вывод самолета относительно какой-то точки:
procedure samolet(X, Y: integer); begin moveto(X, Y);
теперь, если ты в основном цикле будешь присваивать X и Y значения, которые образуют синусоиду, и передавать их в процедуру - то и самолет твой будет тоже лететь по синусоиде...
Как-то так:
for X:=1 to 200 do begin Y := (GetMaxY div 2) + Trunc(100 * sin(X * (Pi/200))); setcolor(3); samolet(X, Y); Delay(3000); setcolor(0); samolet(X, Y); end;
(не тестировал, но работать вроде как должно...)
Автор: numb86 18.10.2006 1:01
спасибо большое попробую так сделать.
Автор: numb86 18.10.2006 1:46
А можно еще кое что спросить.Как нибудь возможно сделать так чтобы самолет во время движения менял положение в пространстве в зависимости от места синусоиды(чтобы само изображение самолета меняло угол наклона)?
Автор: volvo 18.10.2006 21:27
Цитата
чтобы само изображение самолета меняло угол наклона
тебе надо передавать текущее положение самолета на оси OX (а если ты сделал так, как я тебе предлагал - у тебя весь путь по OX будет соответствовать 180 градусам, т.е. одному периоду синусоиды) в процедуру отрисовки, и в зависимости от него рисовать самолет с заданным наклоном (используя Sin/Cos, а не только Line)
Автор: numb86 22.10.2006 3:55
А нельзя ли примерчик хотя бы насчет одной линии а то уменя чтото не получается.