uses Graph,crt; {----------------------------SetGraph_BEGIN---------------------------------} type SetGraph=object {Procedure Hide(x1,y1,x2,y2: integer);} Procedure Show(x1,y1,x2,y2,rec_color: integer); end; (* Procedure SetGraph.Hide; begin setwritemode(xorput); Setcolor(rec_color); Rectangle(x1,y1,x2,y2); setwritemode(copyput); end; *) Procedure SetGraph.Show; begin setwritemode(xorput); SetColor(rec_color); Rectangle(x1,y1,x2,y2); setwritemode(copyput); end; {----------------------------SetGraph_END-----------------------------------} var d,r,px1,px2,py1,py2,pcolor: integer; rect: setgraph; Procedure Move(a,b,c,d: integer); begin (* rect.hide(px1,py1,px2,py2); *) rect.show(px1,py1,px2,py2,pcolor); inc(px1,a); inc(pY1,b); inc(px2,c); inc(py2,d); rect.show(px1,py1,px2,py2,pcolor); end; begin d:=detect; initgraph(d,r,''); px1:=(GetMaxX div 2)-30; py1:=(GetMaxY div 2)-30; px2:=(GetMaxX div 2)+30; py2:=(GetMaxY div 2)+30; pcolor:=3; SetColor(white); Rectangle(0,0,GetMaxX,GetMaxY); Line(0,0,GetMaxX,GetMaxY); line(getmaxX,0,0,getmaxY); {move(0,0,0,0);} rect.show(px1,py1,px2,py2,pcolor); repeat begin if keypressed then begin case readkey of #77: move(1,0,1,0); #75: move(-1,0,-1,0); #80: move(0,1,0,1); #72: move(0,-1,0,-1); end end end until readkey=#27; closegraph; end.