Движение фигуры в pascal abc. Что делать, если уже написала программу и анимация мерцает очень сильно, что поменять?
Движение фигуры в паскале. Что делать, если уже написала программу для движения фигуры (гусеницы) и анимация мерцает очень сильно, что поменять?
uses crt, graphabc;
var x,y:integer;
begin
y:=100;
for x:=10 to 40 do
begin
setbrushColor(clblack);
circle(x+150,350,50);
floodfill(149,350,clgreen);
setbrushColor(clblack);
circle(x+250,350,50);
floodfill(240,351,clgreen);
setbrushColor(clblack);
circle(x+350,350,50);
floodfill(340,351,clgreen);
setbrushColor(clblack);
circle(x+350,249,50);
floodfill(340,250,clgreen);
setbrushColor(clblack);
circle(x+350,148,50);
floodfill(340,150,clgreen);
setbrushColor(clblack);
circle(x+335,145,5);
setbrushColor(clblack);
circle(x+365,145,5);
setbrushColor(clblack);
moveto(x+350,140);
lineto(x+350,165);
arc(x+350,170,10,200,360);
moveto(x+320,110);
lineto(x+285,70);
circle(x+285,70,5);
moveto(x+380,110);
lineto(x+415,70);
circle(x+415,70,5);
delay(100);
ClearWindow(clwhite);
end;
end.
Введи в нужных местах команду задержки продолжения работы программы Sleep(30); где в скобках время в миллисекундах (1000 это 1 секунда)
Ничего, она и будет мерцать из-за перерисовки холста постоянной
программа выдает где-то неверное окрашивание, но разбираться нет сильного желания, да и вопрос был про снятие мерцания ))) с окрашиванием думаю автор разберется
uses graphabc;
var x,y:integer;
begin
y:=100;
LockDrawing;
for x:=10 to 40 do
begin
window.clear;
setbrushColor(clblack);
circle(x+150,350,50);
floodfill(149,350,clgreen);
setbrushColor(clblack);
circle(x+250,350,50);
floodfill(240,351,clgreen);
setbrushColor(clblack);
circle(x+350,350,50);
floodfill(340,351,clgreen);
setbrushColor(clblack);
circle(x+350,249,50);
floodfill(340,250,clgreen);
setbrushColor(clblack);
circle(x+350,148,50);
floodfill(340,150,clgreen);
setbrushColor(clblack);
circle(x+335,145,5);
setbrushColor(clblack);
circle(x+365,145,5);
setbrushColor(clblack);
moveto(x+350,140);
lineto(x+350,165);
arc(x+350,170,10,200,360);
moveto(x+320,110);
lineto(x+285,70);
circle(x+285,70,5);
moveto(x+380,110);
lineto(x+415,70);
circle(x+415,70,5);
ReDraw;
end;
end.