http://informat444.narod.ru/08/08-06-06.pdf
Анимация в Pascal ABC
Рисование шара
uses GraphABC;
var I,X,Y,D: integer;
begin
X:=20; Y:=30; D:=100;
ClearWindow;
SetBrushColor(clGreen);
Ellipse(X+I,Y,X+I+D,Y+D);
end.
Движение шара (без мерцания)
uses GraphABC;
var I,X,Y,D: integer;
begin
X:=20; Y:=30; D:=100;
LockDrawing;
for i:=1 to 500 do
begin
ClearWindow;
SetBrushColor(clGreen);
Ellipse(X+I,Y,X+I+D,Y+D);
Redraw;
Sleep(1);
end;
end.
LockDrawing
Блокирует вывод в графическое окно, осуществляя рисование только во внеэкранном буфере.
Redraw
Перерисовывает окна вывода при заблокированном выводе в графическое окно.
Столкновение двух шаров
( один шар движется, другой покоится)
uses GraphABC;
var I,X,Y,D,X1,X2: integer;
begin
X:=20; Y:=30; D:=70; X1:=350; X2:=500;
LockDrawing;
for I:=1 to X1-D do
// зеленый шар движется, красный стоит на месте
begin
ClearWindow;
SetBrushColor(clGreen);
Ellipse(X+I,Y,X+I+D,Y+D);
SetBrushColor(clRed);
Ellipse(X+X1,Y,X+X1+D,Y+D);
Redraw;
Sleep(5);
end;
for I:=X1 to X2 do
// зеленый шар стоит на месте, красный шар движется
begin
ClearWindow;
SetBrushColor(clGreen);
Ellipse(X+X1-D,Y,X+X1,Y+D);
SetBrushColor(clRed);
Ellipse(X+I,Y,X+I+D,Y+D);
Redraw;
Sleep(5);
end;
end.
Самостоятельная работа
1. Написать программу, которая выводит на экран шар движущийся по вертикали.
2. Написать программу, которая выводит на экран два шара: красный шар стоит на месте, а зеленый движется по горизонтали к нему навстречу. После столкновения зеленый шар останавливается на месте, а красный шар начинает падать вниз (движение по вертикали).
3. Написать программу, которая выводит на экран два шара: красный шар стоит на месте, а зеленый движется по горизонтали к нему навстречу. После столкновения зеленый шар двигается в обратном направлении, а красный шар начинает падать вниз (движение по вертикали).
4. Написать программу, в которой окружность «пробегает» по периметру прямоугольника.
5. Написать программу «Круги на воде»: на экране в произвольном месте появляется окружность, которая сначала увеличивается, а потом уменьшается, затем так же появляются другие окружности. Начальные радиусы у окружности всегда разные.
|