Article by : GandalF
Name: Pascal Beginners #2
Armor Of The Gods ]I[ - (c) 1997, Religion
------------------------------------------------------------------------
Паскаль для начинающих
Как делать меню
Нам нужно сделать меню - то есть движущийся вверх и вниз
курсор с возможностью выбора какого-либо пункта. Для начала
неплохо было бы определиться, что в нашем меню будет, и
загнать это все в массив:
const menu : array[1..5] of string=(
' .:[ Choice 1 ]:. ',' .:[ Choice 2 ]:. ',
' .:[ Choice 3 ]:. ',' .:[ Choice 4 ]:. ',
' .:[ Quit ]:. ');
Теперь определим парочку дополнительных переменных..
var
curchoice, status, temp : byte;
ch : char;
Короче говоря, сам алгоритм очень прост - ждем нажатия
кнопки, если таковое было, смотрим, что это была за кнопка -
если вверх/вниз, то совершаем соответствующее перемещение,
если ентер/еск, то выбираем/отменяем. Прокомментируем
MENU.PAS из примеров:
curchoice:=1;status:=128;textcolor(7); // инициализация
asm mov ah,01;mov cl,$20;int $10;end; // убираем курсор
for temp:=1 to 5 do writeln(menu[temp]); // выводим меню
repeat // цикл идет..
gotoxy(1,curchoice); textcolor(15); // рисуем полоску
textbackground(7); write(menu[curchoice]); // выбора
if keypressed then
case readkey of // проверяем кнопки
#72: if curchoice>1 then begin // вниз, если можно
textcolor(7);textbackground(0); // стираем пред.
// надпись
gotoxy(1,curchoice);write(menu[curchoice]);dec(curchoice);
end;
#80: if curchoice<5 then begin // вверх, если можно
textcolor(7);textbackground(0);
gotoxy(1,curchoice);write(menu[curchoice]);inc(curchoice);
end;
#27: status:=5; // escape
#13: status:=curchoice; // enter
end;
until status=5; // ..пока не выбран последний
// пункт/не нажат escape
asm mov ah,01; m
|