uses crt,graph;
var
drv,mode:integer;
PROCEDURE move_rect;
var
flag_exit,flag_move:boolean;
k:char;
x,x_old,y,y_old:word;
c1,c2:byte;
BEGIN
x:=100; {начальные координаты прямоугольника}
y:=100;
c1:=9; {цвет прямоугольника}
c2:=0; {цвет фона}
flag_move:=true;
flag_exit:=false;
repeat
if keypressed then
begin
k:=readkey;
if k=#27 then flag_exit:=true; {выход}
if k=#80 then {кнопка вниз}
begin
y_old:=y; {сохранить старые координаты}
x_old:=x;
y:=y+5; {изменить текущие координаты}
flag_move:=true; {показать прямоугольник с изменениями}
end;
if k=#72 then {кнопка вверх}
begin
y_old:=y;
x_old:=x;
y:=y-5;
flag_move:=true;
end;
{....другие кнопки}
end;
{координаты изменились, показать изменения}
if flag_move then
begin
setcolor(c2);
rectangle(x_old,y_old,x_old+100,y_old+50);
setcolor(c1);
rectangle(x,y,x+100,y+50);
flag_move:=false;
end;
until flag_exit;
END;
BEGIN
drv:=detect;
initgraph(drv,mode,'C:\bp\bgi\');
move_rect;
closegraph;
END.