uses Graph, Crt;
var Gd, Gm, i, j, k, Size, x, y, Xmax, Ymax: Integer;
P1, P2: Pointer; { тип указатель }
Begin
Gd := VGA; Gm:=2; InitGraph(Gd, Gm, 'c:\tp7\bgi');
Size := ImageSize(0, 0, 20, 100); { размер области }
SetLineStyle(0, 0, 3); { рисуем толстыми линиями }
PieSlice(10, 10, 0, 360, 10); { заполненный круг }
FillEllipse(10, 40, 10, 20); { заполненный эллипс }
Line(8, 60, 0, 100); Line(12, 60, 20, 100); { ли-нии }
{ первый образ }
PieSlice(60, 10, 0, 360, 10);
FillEllipse(60, 40, 10, 20);
Line(60, 60, 60, 100);
{ второй образ }
GetMem(P1, Size); { P1 - указатель адреса для хранения первого образа }
GetImage(0, 0, 20, 100, P1^);{P1^ - содержимое (двоичный код) образа }
GetMem(P2, Size); { P2 - указатель адреса для хранения второго образа }
GetImage(50, 0, 70, 100, P2^);{P2^ - содержимое (двоичный код) образа }
x:=0; y:=200; { координаты начальной точки }
ClearDevice; Line( 0, 300, 600, 300); { "дорога" }
Repeat { имитация движения чередованием образов со смещением }
PutImage(x, y, P1^, 1); delay(150); PutImage(x, y, P1^, 1);
x:=x+10; { смещаем позицию на полшага }
PutImage(x, y, P2^, 1); delay(150); PutImage(x, y, P2^, 1);
x:=x+10
Until x > GetmaxX - 20; { достижение края }
FreeMem(P1, Size); FreeMem(P2, Size); CloseGraph
End.
В приведенной программе в память заносятся два образа человечка с разным положением ног. Экран очищается и в цикле происходит поочередное извлечение образов со смещением по оси "х". Каждое изображение хранится на экране , затем исчезает, вследствие перерисовки в режиме XorPut
var Gd, Gm, i, j, k, Size, x, y, Xmax, Ymax: Integer;
P1, P2: Pointer; { тип указатель }
Begin
Gd := VGA; Gm:=2; InitGraph(Gd, Gm, 'c:\tp7\bgi');
Size := ImageSize(0, 0, 20, 100); { размер области }
SetLineStyle(0, 0, 3); { рисуем толстыми линиями }
PieSlice(10, 10, 0, 360, 10); { заполненный круг }
FillEllipse(10, 40, 10, 20); { заполненный эллипс }
Line(8, 60, 0, 100); Line(12, 60, 20, 100); { ли-нии }
{ первый образ }
PieSlice(60, 10, 0, 360, 10);
FillEllipse(60, 40, 10, 20);
Line(60, 60, 60, 100);
{ второй образ }
GetMem(P1, Size); { P1 - указатель адреса для хранения первого образа }
GetImage(0, 0, 20, 100, P1^);{P1^ - содержимое (двоичный код) образа }
GetMem(P2, Size); { P2 - указатель адреса для хранения второго образа }
GetImage(50, 0, 70, 100, P2^);{P2^ - содержимое (двоичный код) образа }
x:=0; y:=200; { координаты начальной точки }
ClearDevice; Line( 0, 300, 600, 300); { "дорога" }
Repeat { имитация движения чередованием образов со смещением }
PutImage(x, y, P1^, 1); delay(150); PutImage(x, y, P1^, 1);
x:=x+10; { смещаем позицию на полшага }
PutImage(x, y, P2^, 1); delay(150); PutImage(x, y, P2^, 1);
x:=x+10
Until x > GetmaxX - 20; { достижение края }
FreeMem(P1, Size); FreeMem(P2, Size); CloseGraph
End.
В приведенной программе в память заносятся два образа человечка с разным положением ног. Экран очищается и в цикле происходит поочередное извлечение образов со смещением по оси "х". Каждое изображение хранится на экране , затем исчезает, вследствие перерисовки в режиме XorPut
Комментариев нет:
Отправить комментарий