анимация в паскале



Анимация паскаль

Автор _I_DEVIL_I_ задал вопрос в разделе Другие языки и технологии

как сделать анимацию в паскале и получил лучший ответ

Ответ от Глеб[гуру]
Использовать процедуру delay, которая делает паузу в программе.
Алгоритм такой: рисуем первый кадр, делаем паузу, очищаем экран, затем рисуем второй кадр, делаем паузу и т. д.
Например, движение овала вверх:
x:=0;
y:=500;
repeat
y:=y-1;
ClearDevice; {Очистка экрана}
Circle (x, y, 50); {Рисуем окружность}
delay(5000);{Делаем паузу в программе}
until keypressed; {Продолжить, если не нажата клавиша}

Ответ от Евграфов Д.Г.[гуру]
в Паскале - ерунда, Вы попробуйте на счетной машине Бэббиджа такое провернуть!

Ответ от Дмитрий Абрамов[новичек]
program corablik;
uses Graph, Crt;
var
grDriver: integer;
grMode: integer;
ErrCode: integer;
x,y,y0,a,b: integer;{a,b-переменные для линии моря, чтоб они не зависели от х, у}
procedure more(a,b:integer);
begin
moveto(0,y0);
setcolor(blue);
for a:=0 to 680 do{слева направо рисуем синусоиду синего чвета}
begin
b:=y0-round(sin(a*pi/180)*30);{30-коэффициент масштабирования по оси Х,
чем больше, тем волна круче}
lineto(a,b);
end;
end;
begin
grDriver := Detect;
InitGraph(grDriver, grMode, '..BGI');
ErrCode := GraphResult;
y0 := 250;
if ErrCode = grOk then
begin
x:=600;
while x>=0 do{лучше использовать цикл while, можно менять величину шага,
что тоже влияет на скорость и частоту смены картинки}
begin
cleardevice;
more(a,b);{рисуем волну}
setcolor(white);{устанавливаем цвет кораблика}
y:=y0-40-round(sin(x*pi/180)*30);{движемся по волне}
MoveTo(x - 40, y + 20);
LineTo(x - 20, y + 40);
LineTo(x + 20, y + 40);
LineTo(x + 40, y + 20);
LineTo(x - 40, y + 20);
MoveTo(x + 15, y + 20);
LineTo(x + 15, y - 40);
LineTo(x - 20, y + 20);
LineTo(x + 15, y + 20);
delay(100); {нормальная скорость, если модули *.TPL не глючные как у Вас,
время должно быть в миллисекундах, а не в каких-нибудь наносекундах}
x:=x-2;{шаг движения}
end;
end
else Writeln('Graphics error: ', GraphErrorMsg(ErrCode));
Settextstyle(0,0,3);{устанавливаем стиль шрифта}
cleardevice;
setcolor(red);
OuttextXY(200,240,'Rejs zavershen!');{выводим надпись (для понта) }
readln;
CloseGraph;
end.

Ответ от Николай[гуру]
принцип у любой анимации простой, рисуем кадр. стираем кадр, рисуем новый кадр

Ответ от Дима мищенко[активный]
program p23;
uses graphabc;
procedure kadr1(x,y:integer);
begin
Line(0, 275, 640, 275);
setbrushcolor(clAquamarine);
rectangle(x+50,y+50,x+225,y+150);
setbrushcolor(clred);
rectangle(x+75,y+60,x+110,y+100);
rectangle(x+125,y+60,x+155,y+100);
setbrushcolor(clblack);
circle(x+75,y+175,10);
circle(x+175,y+175,10);
setbrushcolor(clDarkSeaGreen);
rectangle(x+200,y+50,x+225,y+100);
redraw();
end;
procedure kadr2(x,y:integer);
begin
Line(0, 275, 640, 275);
setbrushcolor(clAquamarine);
rectangle(x+50,y+50,x+225,y+150);
setbrushcolor(clred);
rectangle(x+75,y+60,x+110,y+100);
rectangle(x+125,y+60,x+155,y+100);
setbrushcolor(clblack);
circle(x+75,y+175,10);
circle(x+175,y+175,10);
setbrushcolor(clDarkSeaGreen);
rectangle(x+200,y+50,x+225,y+100);
redraw();
end;
var
x:integer;
i:integer;
begin
lockdrawing;
for i:=1 to 100 do
begin
x := i * 10;
clearwindow();
kadr1(x,100);
Line(0, 275, 640, 275);
sleep(100);
clearwindow();
Line(0, 275, 640, 275);
kadr2(x+5,100);
sleep(100);
end;
end.

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: как сделать анимацию в паскале
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*