home *** CD-ROM | disk | FTP | other *** search
/ Power Programming / powerprogramming1994.iso / progtool / basic / basmenu.arc / MENUSAMP.BAS next >
BASIC Source File  |  1988-07-24  |  3KB  |  91 lines

  1. 1 ' *******************************************
  2. 2 ' *                                         *
  3. 3 ' *  SAMPLE MENU SUBROUTINE (MENUSAMP.BAS)  *
  4. 4 ' *                                         *
  5. 5 ' *      Written by Kraig J. Tolliver       *
  6. 6 ' *                                         *
  7. 7 ' *              On 07-24-1988              *
  8. 8 ' *                                         *
  9. 9 ' *******************************************
  10. 10   SCREEN 0,0,0:KEY OFF:WIDTH 80:COLOR ,,0
  11. 20   DIM TRIM$(19):' *** Modify to use a next page option to another Menu ***
  12. 30   AUTH$="Program written by Kraig J. Tolliver"
  13. 40   SB=9:TC=6:SC=2:HSC=5:'*** COLOR ***
  14. 50  'SB=7:TC=15:SC=5:HSC=15:'*** B/W ***
  15. 60   GOSUB 9000
  16. 70     ON PICK GOSUB 1000,2000,3000,4000,5000
  17. 80   GOTO 60
  18. 90   END
  19. 9000 TRIMSIZE=0
  20. 9010 TITLE$="Sample MENU"
  21. 9020 MENOPT$(1)="First Selection"  :BD(1)=2
  22. 9030 MENOPT$(2)="Second Selection" :BD(2)=5
  23. 9040 MENOPT$(3)="Third Selection"  :BD(3)=4
  24. 9050 MENOPT$(4)="Fourth Selection" :BD(4)=3
  25. 9060 MENOPT$(5)="Quit"
  26. 9070 LAST=5:AUTH=0:' ***  Set AUTH=1 to by-pass author presentation  ***
  27. 9080 FOR N=1 TO LAST
  28. 9090   IF LEN(MENOPT$(N))>TRIMSIZE THEN TRIMSIZE=LEN(MENOPT$(N))
  29. 9100 NEXT N
  30. 9110 TRIMSIZE=TRIMSIZE+6
  31. 9120 TRIM$(1)=CHR$(201)+STRING$(TRIMSIZE,205)+CHR$(187)
  32. 9130 FOR N=2 TO (LAST*2)+2
  33. 9140   TRIM$(N)=CHR$(186)+SPACE$(TRIMSIZE)+CHR$(186)
  34. 9150 NEXT N
  35. 9160 TRIM$((LAST*2)+3)=CHR$(200)+STRING$(TRIMSIZE,205)+CHR$(188)
  36. 9170 PICK=1:PICK$="":CLS
  37. 9180 COLOR TC,0:LOCATE 3,INT((80-LEN(TITLE$))/2),0:PRINT TITLE$;:COLOR SB,0
  38. 9190 FOR N=1 TO (LAST*2)+3
  39. 9200   LOCATE N+5,INT((78-TRIMSIZE)/2):PRINT TRIM$(N)
  40. 9210 NEXT N
  41. 9220 FOR CHOICE=1 TO LAST
  42. 9230   ROW%(CHOICE)=2*CHOICE+6
  43. 9240   COL%(CHOICE)=INT((86-TRIMSIZE)/2)
  44. 9250 NEXT CHOICE
  45. 9260 FOR CHOICE=1 TO LAST
  46. 9270   LOCATE ROW%(CHOICE),COL%(CHOICE):COLOR SC,0
  47. 9280     IF PICK=CHOICE THEN COLOR 0,HSC
  48. 9290   PRINT MENOPT$(CHOICE):COLOR SC,0
  49. 9300 NEXT CHOICE
  50. 9310   IF AUTH<>0 GOTO 9550
  51. 9320 COLOR 14,0
  52. 9330 MAUTH=INT((80-LEN(AUTH$))/2)
  53. 9340 FOR N=79 TO MAUTH STEP -1
  54. 9350   LOCATE 25,N:PRINT LEFT$(AUTH$,80-N);
  55. 9360 NEXT N
  56. 9370 FOR N=79 TO MAUTH+LEN(AUTH$) STEP -1
  57. 9380   LOCATE 25,N:PRINT " ";
  58. 9390 NEXT N
  59. 9400 COLOR 28,0:LOCATE 25,MAUTH:PRINT AUTH$;:AUTH=1
  60. 9410 FOR N=1 TO 600:SOUND N*10,1/(N*2):NEXT N
  61. 9420 COLOR 13,0
  62. 9430 FOR N=MAUTH TO 1 STEP-1
  63. 9440   LOCATE 25,N
  64. 9450   PRINT AUTH$;" "
  65. 9460 NEXT N
  66. 9470 FOR N=LEN(AUTH$)-1 TO 1 STEP -1
  67. 9480   LOCATE 25,1
  68. 9490   PRINT RIGHT$(AUTH$,N);
  69. 9500 NEXT N
  70. 9510 FOR N=LEN(AUTH$) TO 1 STEP -1
  71. 9520   LOCATE 25,N
  72. 9530   PRINT " ";
  73. 9540 NEXT N
  74. 9550 COLOR ,,1
  75. 9560   IF PICK$=CHR$(27) THEN PICK=5:RETURN
  76. 9570 PICK$=INKEY$:IF PICK$="" GOTO 9570
  77. 9580 ASCII=ASC(PICK$)
  78. 9590   IF ASCII=13 THEN LOCATE ,,1:COLOR TC,0,BD(PICK):RETURN
  79. 9600   IF ASCII=32 THEN PICK=PICK+1:IF PICK>LAST THEN PICK=1:GOTO 9260
  80. 9610   IF ASCII>97 AND ASCII<=122 THEN PICK$=CHR$(ASC(PICK$)-32)
  81. 9620   IF LEN(PICK$)=1 GOTO 9680
  82. 9630 PICK$=RIGHT$(PICK$,1)
  83. 9640 ASCII=ASC(PICK$)
  84. 9650   IF ASCII=72 THEN PICK=PICK-1:IF PICK=0 THEN PICK=LAST
  85. 9660   IF ASCII=80 THEN PICK=PICK+1:IF PICK>LAST THEN PICK=1
  86. 9670 GOTO 9260
  87. 9680 FOR CHOICE=1 TO LAST
  88. 9690   IF PICK$=LEFT$(MENOPT$(CHOICE),1) THEN PICK=CHOICE
  89. 9700 NEXT CHOICE
  90. 9710 GOTO 9260
  91.