Как ускорить работу исполнителя чертёжник в Pascal ABC
Осваиваем с ребенком Pascal ABC (школьный курс информатики - 6 класс).
Написали программку, которая рисует некий орнамент из квадратиков.
Рисование одного квадратика оформили как процедуру.
Рисование повторяющихся фигурок из квадратиков также оформили как процедуру.
Рисование строки из повторяющихся фигурок из квадратиков также оформили как процедуру.
Заполнение квадратной области строками из повторяющихся фигурок из квадратиков также оформили как процедуру. И так далее... Итого получилась глубина вложения процедур - 8 уровней.
В итоге процедура рисования квадратика вызывается 3645 раз.
В исполнителе Чертежник ползунок скорости выставлен на максимум.
Но отрисовка орнамента очень долгая.
Вот фрагмент орнамента и таких фрагментов - 9
Вопрос - можно ли как-то ускорить работу чертежника?
Ответы (2 шт):
Вот пример предоставленный разработчиками PascalABC.Net. Работа не с Чертежником, а с графическим модулем GraphABC
// Пример из пакета KuMir/PMir
program Dragon;
uses GraphABC, Utils;
var
x := 200;
y := 150;
dx := 0;
dy := -4;
turn: array [1..1000] of Boolean;
begin
SetWindowSize(790, 500);
Window.Title := 'Кривая Дракона';
var f := True;
for var a := 1 to 64 do
begin
turn[2 * a - 1] := f;
f := not f;
turn[2 * a] := turn[a];
end;
var b := 0;
var d := 1;
f := false;
MoveTo(x, y);
for var a := 1 to 128 do
begin
var t: integer;
LockDrawing;
for var i := 1 to 127 * 4 do
begin
b += d;
x += dx;
y += dy;
LineTo(x, y);
if f and not turn[b] or not f and turn[b] then
begin
t := dy;
dy := -dx;
end
else
begin
t := -dy;
dy := dx;
end;
dx := t;
end;
b += d;
x += dx;
y += dy;
LineTo(x, y);
d := -d;
f := not f;
if turn[a] then
begin
t := dy;
dy := -dx;
end
else
begin
t := -dy;
dy := dx;
end;
dx := t;
UnLockDrawing;
end;
write('Время работы = ', Milliseconds / 1000, ' с');
end.
Спасибо всем откликнувшимся. Ответы немного не о том, о чем был вопрос, но тем не менее...
Ответ на свой вопрос нашел сам (случайно ;). В файле Х:\PABCWork.NET\ABC.ini значение параметра Speed было 10. Заменил на 1000 и орнамент стал отрисовываться в разы быстрее. И в свойствах файла установил [только чтение] - иначе как только сдвинешь ползунок скорости, так значение Speed в ini-файле возвращается к значению 10
[DrawmanWindow]
Height=1440
Left=398
Speed=1000
Top=274
Width=1247
