uses crt;
const kol=3;{количество пунктов меню}
{массив названий пунктов меню}
vybor:array[1..kol] of string=('1-текст','2-цвет ','3-выход');
procedure Menu(var k:byte);{создание и вывод на экран меню}
var kod: char;
i:byte;
begin
window(1,1,80,25);
textbackground(0);
clrscr;
k:=1;
gotoxy(4,1);
write('Меню');
k:=1; {выведен первый пункт меню}
repeat
for i:=1 to kol do
begin
if i=k then {выделенный пункт}
begin
textbackground(3);
textcolor(9);
end
else {остальные}
begin
textbackground(0);
textcolor(15)
end;
gotoxy(1,i+1);{ставим курсор}
write(vybor[i]);{выводим пункты}
end;
repeat
kod:=readkey;
until Kod in [#13, #72, #80];
case Kod of
#72: begin{стрелка вверх}
k:=k-1;
if k=0 then k:=3;{если выше верха, вниз}
end;
#80: begin {стрелка вниз}
k:=k+1;
if k=4 then k:=1;{если ниже низа, вверх}
end;
end;
until kod=#13;{нажат Enter, выходим из меню в выбранную процедуру}
end;
procedure Text;{первое задание}
var c:char;
x,y,w,h,i,j,x1,y1,k:byte;
begin
writeln('Введите координаты окна и размеры окна:');
repeat
write(' По горизонтали левый край от 1 до 78 x=');
readln(x);
until x in [1..78];
repeat
write(' Ширина от 1 до ',79-x,' w=');
readln(w);
until w in [1..79-x];
repeat
write(' По вертикали верхний край от 2 до 23 y=');
readln(y);
until y in [2..23];
repeat
write(' Высота от 1 до ',24-y,' h=');
readln(h);
until h in [1..24-y];
writeln('Нажмите Enter для продолжения');
textbackground(0);
clrscr;
writeln('Введите текст. Окончание Enter...');
window(x,y,x+w,y+h);
textbackground(15);
textcolor(12);
clrscr;
if keypressed then
begin
c:=readkey;{читаем символы}
write(c);{выводим в окне}
end;
readln;
end;
procedure Cvet;{второе задание}
var k,i,w,h,x,x1,y:byte;
c:char;
begin
textbackground(0);
window(1,1,80,25);
writeln('Введите координаты окна:');
repeat
write(' По горизонтали от 1 до 78 x=');
readln(x);
until x in [1..78];
repeat
write(' Ширина окна от 1 до ',79-x,' w=');
readln(w);
until w in [1..79-x];
repeat
write(' По вертикали от 2 до 23 y=');
readln(y);
until y in [2..23];
repeat
write(' Высота окна от 1 до ',24-y,' h=');
readln(h);
until h in [1..24-y];
writeln('Нажмите Enter для продолжения');
textbackground(0);
clrscr;
writeln('Нажатием клавиши Enter меняйте цвет столбиков. Окончание Esc...');
k:=8;
repeat
for i:=1 to w+1 do
begin
x1:=x+i-1;
window(x1,y,x1,y+h);{создаем окна шириной в один столбик}
textbackground(i-k);{разного цвета}
clrscr;
end;
if keypressed then{ожидаем нажатия клавиши}
begin
c:=readkey;
if c=#13 then k:=k-1;{если Утеук, меняем цвета}
end;
until c=#27;{если Esc, заканчиваем}
end;
{основная программа}
var i,k:byte;
c:char;
begin
repeat
textbackground(0);
textcolor(15);
Menu(k);{выводим меню}
clrscr;
case k of{выбираем стрелками действие}
1: Text;
2: Cvet;
3: begin
window(1,1,80,25);
textbackground(0);
clrscr;
textcolor(15);
writeln('Работа программы завершена! Нажмите Enter для выхода...');
readln;
end;
end;
until k=3;
end.