Создание графического меню - Pascal ABC
Формулировка задачи:
Разработайте горизонтальное световое меню, расположенное вверху экрана, обрамленное рамкой, содержащее 5 пунктов: month, day, hour, minute, exit. Организуйте перемещение по пунктам меню с помощью клавиш Стрелка вправо и Стрелка влево. После выбора какого-нибудь пункта меню клавишей Enter выведите в окошко соответствующие значения. При выборе последнего пункта завершите программу... Вот прога, помогите плз написать
Решение задачи: «Создание графического меню»
textual
Листинг программы
Program kasper; uses crt; const n=5; type stroka=string[50]; masmenu=array[1..n] of stroka; var i,k:integer; kod:char; menu:masmenu; begin clrscr; k:=1; menu[1]:='month'; menu[2]:='day'; menu[3]:='hour'; menu[4]:='minute'; menu[5]:='exit'; while true do begin textmode(3); kod:=' '; While kod<>#13 do begin for i:=1 to n do begin if i=k then begin textbackground(2); textcolor(5); end else begin textbackground(5); textcolor(2); end; gotoxy(1,i+1); Write(menu[i]); kod:=readkey; sound(200); delay(500); nosound; if kod=#0 then kod:=readkey; if kod=#74 then begin if k>1 then k:=k-1 else k:=n; end; if kod=#77 then begin if k<n then k:=k+1 else k:=1; end; end; end; if k=n then begin Window (1,1,80,25); clrscr; halt; end else begin textbackground(3); textcolor(6); window(k+1,7,k+1,12); clrscr; gotoxy(1,1); Write(menu[k]); readln; end; end; end.
Объяснение кода листинга программы
- Создается программа kasper с использованием языка Pascal ABC.
- Используется константа n, которая равна 5.
- Создается тип данных stroka, который представляет собой строку длиной до 50 символов.
- Создается массив masmenu, который содержит до 5 строк.
- Определяются переменные i, k и kod, которые будут использоваться в цикле.
- Задается начальное значение переменной k, которое равно 1.
- Задаются значения для каждого элемента массива menu.
- В цикле while true do происходит следующее:
- textmode(3) - устанавливается режим вывода текста.
- kod:=' ' - считывается символ, который будет использоваться в цикле.
- Пока kod не равен #13 (перевод строки) происходит следующее:
- Для каждого i от 1 до n происходит следующее:
- Если i равно k, то устанавливаются фоновый цвет текста и цвет текста.
- Иначе устанавливаются фоновый цвет текста и цвет фона.
- gotoxy(1,i+1) - перемещается курсор на позицию (1,i+1).
- Write(menu[i]) - выводится элемент меню на экран.
- kod:=readkey - считывается символ, введенный пользователем.
- sound(200) - воспроизводится звук с номером 200.
- delay(500) - задержка в 500 мс.
- nosound; - отключается звук.
- Если kod равен #0, то считывается следующий символ.
- Если kod равен #74, то если k больше 1, то k уменьшается на 1, иначе k устанавливается равным 1.
- Если kod равен #77, то если k меньше n, то k увеличивается на 1, иначе k устанавливается равным 1.
- Если k равно n, то создается окно (1,1,80,25).
- clrscr; - очищается экран.
- halt; - программа завершается.