Program Brezenhem; uses crt,graph,mouse,dos; const size_set = 40; type SetArray =array[1..100,1..100] of byte; BoolArray= array [1..40,1..40] of boolean; matrix= array [1..2,1..2] of Integer; var q:char; selected,select:BoolArray; len_x,len_y,len,w:integer; flag:boolean; gm,gd,i,j,n,z,i1,j1:integer; old_mouse, cur_mouse:boolean; size_x,size_y:integer; c:byte; x_,y_:word; matr:matrix; procedure setka ; begin size_x:=size_set; size_y:=size_set; len_x:=480 div size_x; len_y:=480 div size_y; setcolor(red); for i:=1 to size_y do for j:=1 to size_x do {risuem setku iz pryamoygolnikov} begin rectangle((j-1)*len_x,(i-1)*len_y,j*len_x,i*len_y ); end; end; procedure ResetMouse; begin old_mouse := false; cur_mouse := false; if initmouse then; showmouse; end; function GetMouseEvent: byte; begin cur_mouse := (buttonpressed = 1); if cur_mouse <> old_mouse then begin if cur_mouse then GetMouseEvent := 1 { mouse pressed once } else GetMouseEvent := 2; { mouse released } end else GetMouseEvent := 0; { Nothing changed } old_mouse := cur_mouse; end; Procedure Zapolnyaem( selected:Boolarray;var matr:matrix); var k:boolean; begin for i:=1 to n do for j:=1 to n do begin selected[i,j]:=false; end; for i:=1 to 2 do for j:=1 to 2 do matr[i,j]:=0; repeat {na4inaem proveryat bil li wel4ok miw'u} showmouse; z:=GetMouseEvent; {buttonpressed;} n:=0; for i:=1 to size_y do for j:=1 to size_x do begin if (mousein((j-1)*len_x,(i-1)*len_y,j*len_x,i*len_y )) and (z=1) then begin hidemouse; selected[i,j]:=not selected[i,j]; getmousexy(x_,y_); if selected[i,j] then begin setfillstyle(solidfill,lightgray); end else setfillstyle(solidfill,getbkcolor); bar ((j-1)*len_x,(i-1)*len_y,j*len_x,i*len_y ); setcolor(red); rectangle((j-1)*len_x,(i-1)*len_y,j*len_x,i*len_y ); end; end; for i:=1 to size_x do for j:=1 to size_y do begin if selected[i,j] then n:=n+1; end; case n of 1: begin if matr[1,1]=0 then matr[1,1]:=x_ ; if matr[1,2]= 0 then matr[1,2]:=y_; end; 2: begin matr[2,1]:=x_; matr[2,2]:=y_; end; end; k:=keypressed; until k; end; procedure DrawLine4Connected(x1 : Integer; y1 : Integer;x2 : Integer;y2 : Integer); var q:char; x : Integer; y : Integer; dx : Integer; dy : Integer; sx : Integer; sy : Integer; z : Integer; e : Integer; i : Integer; Ch : Boolean; begin x := x1; y := y1; dx := Abs(x2-x1); dy := Abs(y2-y1); If ((x2-x1) >0 ) then sx:=1 else sx :=-1; If ((y2-x1) >0 ) then sy:=1 else sy :=-1; e := 2*dy-dx; if dy>=dx then begin z := dx; dx := dy; dy := z; Ch := True; end else begin Ch := False; end; i := 1; repeat PutPixel(x, y,10); if e