Search code examples
menuqbasicqb64

Main Menu made in QBasic (QB64)?


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...


Solution

  • 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.