Как ускорить работу исполнителя чертёжник в Pascal ABC

Осваиваем с ребенком Pascal ABC (школьный курс информатики - 6 класс).

Написали программку, которая рисует некий орнамент из квадратиков.
Рисование одного квадратика оформили как процедуру.
Рисование повторяющихся фигурок из квадратиков также оформили как процедуру.
Рисование строки из повторяющихся фигурок из квадратиков также оформили как процедуру.
Заполнение квадратной области строками из повторяющихся фигурок из квадратиков также оформили как процедуру. И так далее... Итого получилась глубина вложения процедур - 8 уровней.

В итоге процедура рисования квадратика вызывается 3645 раз.
В исполнителе Чертежник ползунок скорости выставлен на максимум.
Но отрисовка орнамента очень долгая. Вот фрагмент орнамента и таких фрагментов - 9

Вопрос - можно ли как-то ускорить работу чертежника?


Ответы (2 шт):

Автор решения: Archery

Вот пример предоставленный разработчиками 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
→ Ссылка