2

I've made this menu a long time ago, but I found the file about 2 days ago and I wanted to make it work

CLS
FOR k = 10 TO 65
    LOCATE 2, k: PRINT CHR$(222)
    LOCATE 23, k: PRINT CHR$(222)
    LOCATE 4, k: PRINT CHR$(222)
    LOCATE 20, k: PRINT CHR$(222)
NEXT
FOR k = 2 TO 23
    LOCATE k, 10: PRINT CHR$(222)
    LOCATE k, 65: PRINT CHR$(222)
NEXT
LOCATE 3, 35: PRINT "M A I N   M E N U"
LOCATE 6, 15: PRINT "[1] First Option"
LOCATE 8, 15: PRINT "[2] Second Option"
LOCATE 10, 15: PRINT "[3] Third Option"
LOCATE 12, 15: PRINT "[4] Fourth Option"
LOCATE 14, 15: PRINT "[5] Exit"
LOCATE 21, 15: INPUT "Enter your option"; op

Now, I want to make it work, example: if I press 1 it'll automatically go to that option and so on...

RaLe
  • 99
  • 9

1 Answers1

3

Working with integer variables is faster than working with floating point variables. For efficiency reasons you could change your k and op variables into k% and op%.

To blow some live in this menu, you have a number of possibilities. In order of my personal preference:

Using SELECT CASE

DO
  CLS
  ...             ' the instructions that build your menu
  LOCATE 21, 15: INPUT "Enter your option"; op%
  SELECT CASE op%
    CASE 1
      ...         ' instructions belonging to 1st option
    CASE 2
      ...         ' instructions belonging to 2nd option
    CASE 3
      ...         ' instructions belonging to 3rd option
    CASE 4
      ...         ' instructions belonging to 4th option
    CASE 5
      END
  END SELECT
LOOP

Using IF

DO
  CLS
  ...             ' the instructions that build your menu
  LOCATE 21, 15: INPUT "Enter your option"; op%
  IF op%=1 THEN
    ...           ' instructions belonging to 1st option
  ELSEIF op%=2 THEN
    ...           ' instructions belonging to 2nd option
  ELSEIF op%=3 THEN
    ...           ' instructions belonging to 3rd option
  ELSEIF op%=4 THEN
    ...           ' instructions belonging to 4th option
  ELSEIF op%=5 THEN
    END
  END IF
LOOP

Using ON GOSUB

DO
  CLS
  ...             ' the instructions that build your menu
  LOCATE 21, 15: INPUT "Enter your option"; op%
  IF op%>0 AND op%<6 THEN
    ON op% GOSUB one, two, three, four, five
  ENDIF
LOOP

one:   ...        ' instructions belonging to 1st option
       RETURN
two:   ...        ' instructions belonging to 2nd option
       RETURN
three: ...        ' instructions belonging to 3rd option
       RETURN
four:  ...        ' instructions belonging to 4th option
       RETURN
five:  END

The DO ... LOOP makes the program run until the user finally presses 5 to select Exit. Any invalid input will re-display the menu.

Sep Roland
  • 33,889
  • 7
  • 43
  • 76
  • Thanks, I've managed to make it yesterday lol, but thanks for the help anyways! I'll try to implement menu in your way :) – RaLe Aug 09 '21 at 21:54