Помощь - Поиск - Пользователи - Календарь
Полная версия: Графика на паскале
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
numb86
Народ помогите пожалуйста надо нарисовать на паскале самолет летящий по синусоиде!
мисс_граффити
Сам что-то пробовал?
numb86
да но у меня пока он только по диагонале летит
мисс_граффити
выкладывай код.
numb86
Код
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
Чтобы ОНО "летело" по синусоиде - не привязывайся к текущим координатам... Сделай вывод самолета относительно какой-то точки:
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
спасибо большое попробую так сделать.
numb86
А можно еще кое что спросить.Как нибудь возможно сделать так чтобы самолет во время движения менял положение в пространстве в зависимости от места синусоиды(чтобы само изображение самолета меняло угол наклона)?
volvo
Цитата
чтобы само изображение самолета меняло угол наклона
тебе надо передавать текущее положение самолета на оси OX (а если ты сделал так, как я тебе предлагал - у тебя весь путь по OX будет соответствовать 180 градусам, т.е. одному периоду синусоиды) в процедуру отрисовки, и в зависимости от него рисовать самолет с заданным наклоном (используя Sin/Cos, а не только Line)
numb86
А нельзя ли примерчик хотя бы насчет одной линии а то уменя чтото не получается.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.