Создание графического меню - 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.

Объяснение кода листинга программы

  1. Создается программа kasper с использованием языка Pascal ABC.
  2. Используется константа n, которая равна 5.
  3. Создается тип данных stroka, который представляет собой строку длиной до 50 символов.
  4. Создается массив masmenu, который содержит до 5 строк.
  5. Определяются переменные i, k и kod, которые будут использоваться в цикле.
  6. Задается начальное значение переменной k, которое равно 1.
  7. Задаются значения для каждого элемента массива menu.
  8. В цикле 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.
  9. Если k равно n, то создается окно (1,1,80,25).
  10. clrscr; - очищается экран.
  11. halt; - программа завершается.

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы