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

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

Форум «Всё о Паскале» _ Задачи _ Графика на паскале

Автор: numb86 17.10.2006 23:27

Народ помогите пожалуйста надо нарисовать на паскале самолет летящий по синусоиде!

Автор: мисс_граффити 17.10.2006 23:32

Сам что-то пробовал?

Автор: numb86 17.10.2006 23:52

да но у меня пока он только по диагонале летит

Автор: мисс_граффити 18.10.2006 0:08

выкладывай код.

Автор: numb86 18.10.2006 0:40

Код
uses Graph,crt;

var
driver,mode,x,y,i:integer;


procedure samolet;
begin
linerel(30,0);
linerel(-10,-10);
linerel(0,-20);
linerel(30,0);
linerel(-30,-15);
linerel(0,-15);
linerel(-5,-5);
linerel(-5,5);
linerel(0,15);
linerel(-30,15);
linerel(30,0);
linerel(0,20);
linerel(-10,10);
end;


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);

linerel(30,0);
linerel(-10,-10);
linerel(0,-20);
linerel(30,0);
linerel(-30,-15);
linerel(0,-15);
linerel(-5,-5);
linerel(-5,5);
linerel(0,15);
linerel(-30,15);
linerel(30,0);
linerel(0,20);
linerel(-10,10);
end;

теперь, если ты в основном цикле будешь присваивать 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

А нельзя ли примерчик хотя бы насчет одной линии а то уменя чтото не получается.