Программа


White = 15     'Белый цвет
LightGray = 7  'Серый цвет
'Описание параметров меню:
  QuantityMenuPoint = 4  ' Количество пунктов меню
  ExitPoint = QuantityMenuPoint  ' Пункт меню "Выход"
  MenuPoint = ExitPoint      ' Текущий пункт меню
  MaxLengthMenuPoint = 17' Максимальная длина пункта меню
  ' Положение верхнего левого угла меню:
    XStart = (80 - MaxLengthMenuPoint) \ 2 - 2
    YStart = (24 - QuantityMenuPoint) \ 2 - 1
DIM MenuList$(QuantityMenuPoint)   ' Массив для списка пунктов меню
  ' Список пунктов меню:
    DATA "Первый пункт меню","Второй пункт меню","Третий пункт меню","ВЫХОД            "
  FOR i% = 1 TO QuantityMenuPoint ' Цикл инициализации массива
    READ MenuList$(i%)               ' Инициализация массива
  NEXT i%

DEF FnMenu%      ' Функция вывода меню
  CLS             ' Очистка экрана
  ' Вывод статус-строки:
      LOCATE 24, 8     ' Позиционирование курсора
      COLOR White      ' Установка белого цвета
      PRINT CHR$(24); CHR$(25);
      COLOR LightGray   ' Установка серого цвета
      PRINT " Выбор пункта меню";
      LOCATE 24, 38     ' Позиционирование курсора
      COLOR White       ' Установка белого цвета
      PRINT CHR$(17); CHR$(196); CHR$(217);
      COLOR LightGray   ' Установка серого цвета
      PRINT " Активизация выбранного пункта";
  ExitMenuFlag$ = "No"  ' Сброс флага "Выход"
  ' Прорисовка меню:
    LOCATE YStart, XStart      ' Позиционирование курсора
    PRINT "╔";                 ' Вывод левого верхнего угла рамки меню
    FOR MenuMeter = 1 TO MaxLengthMenuPoint + 2
                                        ' Цикл вывода верхней части рамки меню
      PRINT "═";
    NEXT MenuMeter
    PRINT "╗";                 ' Вывод правого верхнего угла рамки меню
    FOR MenuMeter = 1 TO QuantityMenuPoint  ' Цикл вывода пунктов меню
      LOCATE YStart + MenuMeter, XStart       ' Позиционирование курсора
      PRINT "║ "; MenuList$(MenuMeter); " ║"; ' Вывод пункта меню
    NEXT MenuMeter
    LOCATE YStart + QuantityMenuPoint + 1, XStart
    PRINT "╚";                 ' Вывод левого нижнего угла рамки меню
    FOR MenuMeter = 1 TO MaxLengthMenuPoint + 2
                                        ' Цикл вывода нижней части рамки меню
      PRINT "═";
    NEXT MenuMeter
    PRINT "╝";                 ' Вывод правого нижнего угла рамки меню
    GOSUB PointON:   ' Подсветить пункт меню
    DO
      SELECT CASE INKEY$  ' Выбор действия по нажатой клавише
        CASE CHR$(0) + CHR$(72)   ' Движение вверх
                     GOSUB PointOFF:                ' Погасить пункт меню
                     ' Переопределение пункта меню:
                       MenuPoint = MenuPoint - 1
                       IF MenuPoint < 1 THEN MenuPoint = QuantityMenuPoint
                       ' Переопределение пункта меню при выходе за предел диапазона
                     GOSUB PointON:   ' Подсветить пункт меню
        CASE CHR$(0) + CHR$(80)   ' Движение вниз
                      GOSUB PointOFF:   ' Погасить пункт меню
                      ' Переопределение пункта меню:
                        MenuPoint = MenuPoint + 1
                        IF MenuPoint > QuantityMenuPoint THEN MenuPoint = 1
                       ' Переопределение пункта меню при выходе за предел диапазона
                       GOSUB PointON:   ' Подсветить пункт меню
        CASE CHR$(13)              ' Выход по "Enter"
                      ExitMenuFlag$ = "Yes"  ' Подъем флага "Выход"
        CASE CHR$(27)              ' Выход по "Esc"
                      ExitMenuFlag$ = "Yes"  ' Подъем флага "Выход"
                      MenuPoint = ExitPoint
        END SELECT
    LOOP UNTIL ExitMenuFlag$ = "Yes"
    IF MenuPoint = ExitPoint THEN FnMenu% = 255 ELSE FnMenu% = MenuPoint
                                               ' Определение значения функции
  GOTO EndMenu


PointON:       ' Подпрограмма подсветки пункта меню
  COLOR White           ' Установка белого цвета
  LOCATE YStart + MenuPoint, XStart + 1  ' Позиционирование курсора
  PRINT CHR$(16); MenuList$(MenuPoint); CHR$(17) ' Вывод пункта меню с указателями
  COLOR LightGray              ' Установка серого цвета
RETURN

PointOFF:       ' Подпрограмма гашения пункта меню
  COLOR LightGray             ' Установка серого цвета
  LOCATE YStart + MenuPoint, XStart + 1  ' Позиционирование курсора
  PRINT " "; MenuList$(MenuPoint); " " ' Вывод пункта меню
RETURN

EndMenu:
END DEF


ExitFlag$ = "No"  ' Сброс флага "Выход"
  DO   ' Цикл работы программы
    SELECT CASE FnMenu%        ' Выбор действия по ответу на меню
      CASE 1
      CASE 2
      CASE 3
      CASE 255
        ExitFlag$ = "Yes"  ' Подъем флага "Выход"
    END SELECT
  LOOP UNTIL ExitFlag$ = "Yes"
END


Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию