{...}
begin
if not InitMouse then begin
writeln(?Для работы программы необходима мышь?);
halt;
end;
GetPal(p[0],0,256);
FadeOut(p);
randomize;
for i := 1 to NumSprites do
CreateSprite(NameSprt[(i mod 2)+1],
random(320-Xsize),random(200-Ysize),
1,1,Sprt[i]);
r.ax := $13; { устанавливаем режим }
intr($10,r); { 320х200х256 цветов }
SetMouseRange(0,0,299,179); {для спрайта 20х20}
SetMouse(150,90); {помещаем мышь в центр экрана}
BlackPal;
CreateScreenBuffer; {создаем буфер}
CreateBackBuffer; {создаем буфер для фона}
PutBackGround; {рисуем фон}
FadeIn(p);
for i := 1 to NumSprites do begin
PutSprite(Sprt[i]);{и рисуем на его месте спрайт}
end;
SetTextParm(15,0,1);
repeat {теперь спрайт будет двигаться по экрану}
{до тех пор, пока мы не нажмем на клавишу}
BackBufferToScreen;
for i := 1 to NumSprites do begin
CalcSpritePosition(Sprt[i]);
if i = 1 then begin {переопределяем координаты}
{спрайта, управляемого мышью}
MouseStatus := GetMouse(Sprt[i].x,Sprt[i].y);
Sprt[i].x := Sprt[i].x * 64;
Sprt[i].y := Sprt[i].y * 64;
end;
PutSprite(Sprt[i]); { выводим спрайт}
end;
if (MouseStatus and 1) = 1 then
PutText(56,16,?Левая кнопка мыши нажата?);
if (MouseStatus and 2) = 2 then
PutText(56,24,?Правая кнопка мыши нажата?);
if (MouseStatus and 4) = 4 then
PutText(56,32,?Средняя кнопка мыши нажата?);
FPS := GetFPS;
str(FPS:0:1,s);
PutText(120,184,? ?+s+? fps ?);
if FPS > 1 then {изменяем приращение}
for i := 1 to NumSprites do begin
Sprt[i].dx := sign(Sprt[i].dx)
*round(64*70/FPS);
Sprt[i].dy := sign(Sprt[i].dy)
*round(64*70/FPS);
end;
WaitVerticalRetrace;
{ожидаем обратный ход луча кадровой развертки}
ScreenBufferToScreen; {буфер - на экран}
until keypressed;
readkey; {чистим буфер клавиатуры}
DestroyBackBuffer; {уничтожаем буфер фона}
DestroyScreenBuffer; {уничтожаем буфер}
FadeOut(p);
r.ax := $3;
intr($10,r); {возвращаемся в текстовый режим}
for i := NumSprites downto 1 do
DestroySprite(Sprt[i]);
end.