Тексты программ __ 307
Putlmage(X-ddx,Y-ddy,P^,NotPut) ;
end end;
(Нажата кнопка: восстанавливаем экран} Putlmage (X-ddx,Y-ddy,P'',MormalPut);
FreeMem(P,sz);
GotoXY(60,25) ;
Write (' ') ;
GetMouseState(k,xx,yy); {k - нажатая кнопка) while MousePressed do; {Ждем отпускания} N := NY*16+NX;
Tab! := k=LeftButton;
ShowMouse;
MouseScreen (Освобождаем мышь} end; {Tab!} {——————}
Procedure ClearWE;
{Очищает рабочее поле} begin
ClearWinEd;
Putlmage (XR.YI^WR^NormalPut:) ;
NVecE := 0;
WidthX := 0 end;
{——————}
Procedure GetChar;
(Берет символ из таблицы} var
k: Integer;
N: Byte;
W,op: Word;
xx,yy: Shortint;
begin
if not Tab!(N) then
Exit; {Выход по правой кнопке} ClearWE; (Очищаем рабочее поле} PW := Chars[N]; (Адрес описателей} X := 0; (Начальные координаты пера} У := 0;
SetColor(Yellow) ;
SetWriteMode(XORPut) ;
(Цикл по командам} for k := 1 to LengD[N] div 2 do begin
H := PW[k]; (Очередное слово} op := W and $8080; {Код операции} W := W xor op;
xx := W and 127; (Координата Х} yy :=• W shr 8; {Координата Y} if yy>63 then yy := yy-128;
if op=$8080 then
begin (Команда чертить} inc(NVecE); (Колич.векторов} with VecE[NVecE] do
begin (Формируем новый вектор} XI := XE+X*DXE;
Yl :- YB-Y*DYE;
X2 := XE+xx*DXE;