' +--------------------------------------------------------------------+ ' | | ' | - S q a r M e n . B a s - | ' | | ' | | ' | Public Domain - FreeWare | ' +--------------------------------------------------------------------+ ' +--------------------------------------------------------------------+ ' | - ABOUT THE AUTHOR - | ' +--------------------------------------------------------------------+ ' | | ' | Hello. My name is Don Smith and I am a thirty-year retired teacher | ' | of Math/History/Spanish residing in Orange County, California. I | ' | am also a former six-year Sergeant of Marines. Who-Rah! On certain | ' | forums I am known as MarineDon.My email is: smithdonb@earthlink.net| ' | | ' +--------------------------------------------------------------------+ ' | - COPYING AND DISTIBUTING - | ' +--------------------------------------------------------------------+ ' | Since this code is public domain and freeware, anyone may freely | ' | copy and distribute it. If you use the QuickBasic code in one of | ' | your own programs, you do not have to cite my name as the author, | ' | and you may even change its name. | ' +--------------------------------------------------------------------+ ' +--------------------------------------------------------------------+ ' | SquarMen.Bas was written by Don Smith on 08/01/2002, and is | ' | Public Domain, FreeWare. It was written to illustrate how | ' | to write a patterned menu. Such a program could be used as | ' | a rolidex of telephone numbers. | ' | | ' | Don's email: smithdonb@earthlink.net | ' +--------------------------------------------------------------------+ ' +--------------------------------------------------------------------+ ' | | ' | Compile: BC: BBmenuQB.Bas | ' | LINK: BBmenuQB.Bas | ' | LIB: BCom45.Lib | ' | | ' +--------------------------------------------------------------------+ DEFINT A-Z begin: 'WIDTH 40 COLOR 15, 0 CLS REDIM M1$(10) M1$(1) = "Menu 1" M1$(5) = "Menu 2" M1$(9) = "Menu 3" REDIM M2$(10) M2$(1) = "Menu 4" M2$(5) = "Menu 5" M2$(9) = "Menu 6" REDIM M3$(10) M3$(1) = "Menu 7" M3$(5) = "Menu 8" M3$(9) = "Menu 9" REDIM First%(10) FOR First% = 1 TO 9 LOCATE First% + 4, 3 PRINT M1$(First%) LOCATE First% + 4, 16 PRINT M2$(First%) LOCATE First% + 4, 29 PRINT M3$(First%) NEXT LOCATE 18, 17, 0: PRINT "Exit" Row% = 3: Col% = 1: Box% = 1 COLOR 14, 0 GOSUB place.box DO COLOR 14, 0 DO DaKey$ = INKEY$ LOOP UNTIL LEN(DaKey$) > 0 DaKey% = CVI(DaKey$ + CHR$(0)) LOCATE , , 0 IF DaKey% = 27 THEN ' GOTO leave ELSEIF DaKey% = 13 THEN ' IF Box% = 10 THEN GOTO leave END IF GOSUB choose.a.number GOTO begin ELSEIF DaKey% = 20480 THEN ' GOSUB clear.box GOSUB down.arrow GOSUB place.box ELSEIF DaKey% = 18432 THEN ' GOSUB clear.box GOSUB up.arrow GOSUB place.box ELSEIF DaKey% = 19712 THEN ' GOSUB clear.box GOSUB right.arrow GOSUB place.box ELSEIF DaKey% = 19200 THEN ' GOSUB clear.box GOSUB left.arrow GOSUB place.box END IF LOOP leave: WIDTH 80: COLOR 7, 0: CLS : LOCATE 1, 1, 1, 6, 7: END choose.a.number: CLS : PRINT Box%: DO: LOOP WHILE INKEY$ = "" RETURN place.box: LOCATE Row%, Col% PRINT "Ú" + STRING$(9, "Ä") + "¿" LOCATE Row% + 1, Col% PRINT "³" LOCATE Row% + 1, Col% + 10 PRINT "³" LOCATE Row% + 2, Col% PRINT "³" LOCATE Row% + 2, Col% + 10 PRINT "³" LOCATE Row% + 3, Col% PRINT "³" LOCATE Row% + 3, Col% + 10 PRINT "³" LOCATE Row% + 4, Col% PRINT "À" + STRING$(9, "Ä") + "Ù" RETURN clear.box: LOCATE Row%, Col% PRINT " " + STRING$(9, " ") + " " LOCATE Row% + 1, Col% PRINT " " LOCATE Row% + 1, Col% + 10 PRINT " " LOCATE Row% + 2, Col% PRINT " " LOCATE Row% + 2, Col% + 10 PRINT " " LOCATE Row% + 3, Col% PRINT " " LOCATE Row% + 3, Col% + 10 PRINT " " LOCATE Row% + 4, Col% PRINT " " + STRING$(9, " ") + " " RETURN down.arrow: IF Box% = 1 THEN Box% = 2: Row% = 7: Col% = 1 ELSEIF Box% = 2 THEN Box% = 3: Row% = 11: Col% = 1 ELSEIF Box% = 3 THEN Box% = 1: Row% = 3: Col% = 1 ELSEIF Box% = 4 THEN Box% = 5: Row% = 7: Col% = 14 ELSEIF Box% = 5 THEN Box% = 6: Row% = 11: Col% = 14 ELSEIF Box% = 6 THEN Box% = 10: Row% = 16: Col% = 14 ELSEIF Box% = 7 THEN Box% = 8: Row% = 7: Col% = 27 ELSEIF Box% = 8 THEN Box% = 9: Row% = 11: Col% = 27 ELSEIF Box% = 9 THEN Box% = 7: Row% = 3: Col% = 27 ELSEIF Box% = 10 THEN Box% = 4: Row% = 3: Col% = 14 END IF RETURN up.arrow: IF Box% = 1 THEN Box% = 3: Row% = 11: Col% = 1 ELSEIF Box% = 2 THEN Box% = 1: Row% = 3: Col% = 1 ELSEIF Box% = 3 THEN Box% = 2: Row% = 7: Col% = 1 ELSEIF Box% = 4 THEN Box% = 10: Row% = 16: Col% = 14 ELSEIF Box% = 5 THEN Box% = 4: Row% = 3: Col% = 14 ELSEIF Box% = 6 THEN Box% = 5: Row% = 7: Col% = 14 ELSEIF Box% = 7 THEN Box% = 9: Row% = 11: Col% = 27 ELSEIF Box% = 8 THEN Box% = 7: Row% = 3: Col% = 27 ELSEIF Box% = 9 THEN Box% = 8: Row% = 7: Col% = 27 ELSEIF Box% = 10 THEN Box% = 6: Row% = 11: Col% = 14 END IF RETURN right.arrow: IF Box% = 1 THEN Box% = 4: Row% = 3: Col% = 14 ELSEIF Box% = 2 THEN Box% = 5: Row% = 7: Col% = 14 ELSEIF Box% = 3 THEN Box% = 6: Row% = 11: Col% = 14 ELSEIF Box% = 4 THEN Box% = 7: Row% = 3: Col% = 27 ELSEIF Box% = 5 THEN Box% = 8: Row% = 7: Col% = 27 ELSEIF Box% = 6 THEN Box% = 9: Row% = 11: Col% = 27 ELSEIF Box% = 7 THEN Box% = 1: Row% = 3: Col% = 1 ELSEIF Box% = 8 THEN Box% = 2: Row% = 7: Col% = 1 ELSEIF Box% = 9 THEN Box% = 3: Row% = 11: Col% = 1 ELSEIF Box% = 10 THEN Box% = 9: Row% = 11: Col% = 27 END IF RETURN ' left.arrow: IF Box% = 1 THEN Box% = 7: Row% = 3: Col% = 27 ELSEIF Box% = 2 THEN Box% = 8: Row% = 7: Col% = 27 ELSEIF Box% = 3 THEN Box% = 9: Row% = 11: Col% = 27 ELSEIF Box% = 4 THEN Box% = 1: Row% = 3: Col% = 1 ELSEIF Box% = 5 THEN Box% = 2: Row% = 7: Col% = 1 ELSEIF Box% = 6 THEN Box% = 3: Row% = 11: Col% = 1 ELSEIF Box% = 7 THEN Box% = 4: Row% = 3: Col% = 14 ELSEIF Box% = 8 THEN Box% = 5: Row% = 7: Col% = 14 ELSEIF Box% = 9 THEN Box% = 6: Row% = 11: Col% = 14 ELSEIF Box% = 10 THEN Box% = 3: Row% = 11: Col% = 1 END IF RETURN