Podwójne buforowanie w Pascalu


(Laga321) #1

Witam mam taki problem, gdyż miałem napisać program, w którym miał znajdować się napis lub figura , która będzie się odbijać od brzegów ekranu i jako tako mi to wyszło, ale nie wiem jak zlikwidować to migotanie wiem tylko, że trzeba użyć procedur SetActivePage i SetVisualPage i próbowałem z tym kombinować, lecz nic z tego mi nie wychodziło. Prosiłbym o jakąś wskazówkę gdzie miałbym wstawić te polecenia w programie i zależałoby mi na szybkiej i fachowej pomocy bo na jutro mam zaliczenie z tego programu a oto kod programu:

program anim2;

uses graph,crt;

var

d,m,x,y,a:integer;


PROCEDURE pilka(x,y:integer);

begin

SETCOLOR(blue);

setfillstyle(1,green);

pieslice(x,y,0,360,40);


end;


procedure goraprawo;

begin

repeat

cleardevice;

pilka(x,y);

a:=a+1;

x:=x+2;

if a mod(3) = 0 then

y:=y-1 else

y:=y;


delay(20)

until x>800;

end;


procedure goralewo;

begin

repeat

cleardevice;

pilka(x,y);

a:=a+1;

x:=x-2;

if a mod(3) = 0 then

y:=y-1 else

y:=y;

delay(20)

until x<40;

end;


procedure dollewox;

begin

repeat

cleardevice;


pilka(x,y);

a:=a+1;

if a mod (3) =0 then

x:=x-1 else x:=x;

y:=y+2;

delay(20);

until y>600;

end;


procedure goralewox;

begin

repeat

cleardevice;

pilka(x,y);

a:=a+1;

if a mod (3) =0 then


x:=x-1 else x:=x;

y:=y-2;

delay(20);

until y<40;

end;


begin

d:=detect;

initgraph(d,m,'');

X:=800;

y:=600;

repeat

goraprawo;

goralewo;

goraprawo;

goralewo;


repeat {->}

cleardevice;

pilka(x,y);

x:=x+2;

delay(10);

until x>600;


dollewox;

goralewox;

dollewox;

goralewox;

dollewox;

goralewox;

dollewox;


until keypressed;

readln;

closegraph;

end.

(Johny) #2

Dodaj jeszcze do tego procedurę Delay po narysowaniu piłki,za szybko mażesz Delay(czas)

czas jest w milisekundach.

na starej pozycji można też rysować piłkę w kolorze czarnym,czyli kopia procedury pilka ale z kolorem black setColor(black);

setfillStyle(1,black);

pieslice (x,y,0,360,40);

cleardevice resetuje urządzenie,możesz też zamiast tego czarny prostokąt na całe okno rysować

setcolor(black)

Bar(0,0,800,600) (zamiast cleardevice) i delay po narysowaniu piłki ,po prostu popróbój z prostokątem i z delay,żeby wymazywało