Анимация паскаль
Автор _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 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.
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.
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: как сделать анимацию в паскале
спросили в Randomness
Помогите.. Как двигать например круги в паскале?
рисовать, например, со смещенным
подробнее...
Помогите.. Как двигать например круги в паскале?
рисовать, например, со смещенным
подробнее...
Паскаль. Анимация. Как по нажатию на кнопку заставить машину ехать в обратную сторону?
program Mashina;
uses
GraphABC;
procedure CreateCarPic(var p:
подробнее...
спросили в Android
Pascal на android
можно сделать анимацию на freepascal через на android
другие версии паскаля не
подробнее...
Pascal на android
можно сделать анимацию на freepascal через на android
другие версии паскаля не
подробнее...
В каких фильмах кроме комедий снимался Пьер Ришар
Роли в кино:
Все основные его роли:
2006 - Парижане
2005 - Кактус - Кристиан
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
спросили в Visual Basic NET
Как написать программу для windows?
Скачай себе Microsoft Visual Basic. По идее интерфейс понятен интуитивно, ну а коды можно найти в
подробнее...
Как написать программу для windows?
Скачай себе Microsoft Visual Basic. По идее интерфейс понятен интуитивно, ну а коды можно найти в
подробнее...
спросили в Техника
Как самостоятельно стать программистом? какие книги надо прочесть, для общего понимания программирования? какие языки
Считаю, что начинать изучать программирование надо с таких языков, которые были бы понятны для
подробнее...
Как самостоятельно стать программистом? какие книги надо прочесть, для общего понимания программирования? какие языки
Считаю, что начинать изучать программирование надо с таких языков, которые были бы понятны для
подробнее...
Ищу учителя по программированию!)
Крайне не согласен с предыдущим ответом. Тут уже стоит другой вопрос - если ты хочешь изучать все
подробнее...