Создание и вывод меню - Pascal ABC
Формулировка задачи:
1.Вывести на экран монитора систему меню, расположенную горизонтально или
вертикально. Перед выводом системы меню необходимо вывести заставку.
2. В любой момент времени должен быть выбран только один элемент меню,
который должен выделяться с помощью другого цвета, повышенной или пониженной
интенсивности свечения, выделения первой буквы в названии или иным способом.
3. Необходимо иметь возможность перемещаться по пунктам горизонтальной
системы меню с помощью клавиш <Стрелка влево> и <Стрелка вправо>, а по пунктам
вертикальной системы меню с помощью клавиш <Стрелка вверх> и <Стрелка вниз>.
4. Необходимо иметь возможность выбора элемента меню нажатием на клавишу
<Enter> или какую-либо другую аналогичную клавишу.
5. Необходимо иметь возможность выхода из системы меню нажатием на клавишу
<Esc> или какую-либо другую аналогичную клавишу.
Заставка:Выбор учебного предмета;
Элементы меню:1)Физика;2)Математика;3)Химия;4)Биология;
Тип меню:Вертикальное
Информационное сообщение:"Выбран учебный предмет<...>"
Решение задачи: «Создание и вывод меню»
textual
Листинг программы
uses crt;
{массив названий пунктов меню}
const vybor:array[1..5] of string=('1-Физика',
'2-Математика',
'3-Химия',
'4-Биология',
'5-Выход');
procedure Menyu(var k:byte;kol:byte);
var kod: char;
i:byte;
begin
clrscr;
k:=1;
gotoxy(1,1);
repeat
for i:=1 to kol do
begin
if i=k then
begin
textbackground(2);
textcolor(1);
end
else
begin
textbackground(7);
textcolor(0)
end;
gotoxy(1,i);
write(vybor[i]);
end;
writeln;
textbackground(0);
textcolor(15);
write('Для выхода можно нажать Esc..');
repeat
kod:=readkey;
until kod in [#32, #72, #80,#27];
case kod of
#72: begin {стрелка вверх}
k:=k-1;
if k=0 then k:=kol;{если верхний край, вниз}
end;
#80: begin {стрелка вниз}
k:=k+1;
if k>kol then k:=1;{если нижний край, вверх}
end;
#27:begin{возможность выхода по Esc}
k:=5;
exit;
end;
end;
until kod in [#32,#27];
end;
var k:byte;
begin
textbackground(3);
textcolor(14);
clrscr;
gotoXY(30,11);
write('ВЫБОР УЧЕБНОГО ПРЕДМЕТА');
gotoXY(25,12);
write('перемещение по меню стрелки вверх и вниз');
gotoXY(29,13);
write('выбор пункта меню клавиша ПРОБЕЛ');
textcolor(15);
gotoXY(35,15);
write('нажмите Enter');
readln;
repeat
Menyu(k,5);{выводим меню}
case k of{выбираем стрелками действие}
1:begin
clrscr;
writeln('Выбран учебный предмет Физика');
write('нажмите Enter');
readln;
end;
2:begin
clrscr;
writeln('Выбран учебный предмет Математика');
write('нажмите Enter');
readln;
end;
3:begin
clrscr;
writeln('Выбран учебный предмет Химия');
write('нажмите Enter');
readln;
end;
4:begin
clrscr;
writeln('Выбран учебный предмет Биология');
write('нажмите Enter');
readln;
end;
end;
until k=5;
end.
Объяснение кода листинга программы
- В начале кода объявлены две константы:
vybor(массив названий пунктов меню) иkod(переменная для хранения выбранного ключа). - Далее следует процедура
Menyu, которая выводит меню на экран и обрабатывает нажатия клавиш для перемещения по меню. - После этого объявлены две переменные:
k(для хранения текущего выбранного пункта меню) иkol(для хранения количества элементов в меню). - Затем следует основной блок кода, который начинается с вывода на экран сообщения
ВЫБОР УЧЕБНОГО ПРЕДМЕТАи инструкций по использованию меню. - Далее идет бесконечный цикл, который продолжается до тех пор, пока пользователь не нажмет Enter.
- Внутри цикла вызывается процедура
Menyu, которая выводит меню на экран. - После этого следует блок обработки выбора пользователя: если выбрана стрелка вверх, то текущий выбранный пункт меню становится предыдущим, если выбрана стрелка вниз, то текущий выбранный пункт меню становится следующим.
- Если выбран пробел, то выполняется соответствующая операция в зависимости от текущего выбранного пункта меню.
- Если выбрано действие (например, выбор пункта меню), то выполняется соответствующий блок кода.
- Если выбран выход по Esc, то выполняется выход из программы.
- Если выбран пункт меню
Физика, то выводится сообщениеВыбран учебный предмет Физика. - Если выбран пункт меню
Математика, то выводится сообщениеВыбран учебный предмет Математика. - Если выбран пункт меню
Химия, то выводится сообщениеВыбран учебный предмет Химия. - Если выбран пункт меню
Биология, то выводится сообщениеВыбран учебный предмет Биология. - Если выбран пункт меню
Выход, то выполняется выход из программы.