主题:菜单的制作方法(简介)
做菜单很简单,在下面我主要讲讲原理,这个也不需要什么高深的算法知识,但是又得去做,而且很多初学的人也不知道怎么做。
1、最简单的菜单选择(做了一个要显示的菜单后,用的是输入语句来判断你的选择 )
2、复杂一些的就是用键盘的上下键来选择菜单,(在后面我会讲到)
1、简单的
做了一个要显示的菜单后,用的是输入语句来判断你的选择,就象下面的这个
LOCATE 10,10:PRINT "1.TEST1"
LOCATE 11,10:PRINT "2.TEST2"
INPUT "INPUT ",M
IF M=1 THEN....
IF M=2 THEN....
.....
这个是个最简单的选择方式,不过,这个我们还可以改进,这个你输入以后还得按个回车键,如果把INPUT "INPUT ",M 这个语句改成M$=INPUT$(1):这样你只要一按1或者是2就会选择,当然还得把字符转换成数字,所以加上这个语句m=val(m$)
当然没有哪个成熟的软件会用这个方式来让大家来选择菜单项!不过这种方式代码少,写给自己或者很少人用用还是可以!
我们当然希望能用键盘上的上下键来选择菜单,那样就更人性化一些!
2、复杂些的!
我就用文本下的菜单选择来举例说明这个方法!
在这个大致上有这么几步
1,在屏幕上显示要选择的菜单项
2,一些初始化工作,把选择光条停在菜单的某一行中,记住这行
3,进入一个循环,对键盘进行捕捉(如果按的是下,就把行加一,如果是上就减一,如果按回车就退出循环)
4,先把旧的光条还原,再把光条停在新的行,(以前记住的旧行就更新)
5,根据选择执行相应的功能(最好用选择语句)
请看下面我给出的代码
CLS
''用一个数组来定义这些个菜单(这样选择会很方便)
DIM MenuTxt$(4)
MenuTxt$(0) = "Menu Demo 1.0 XXX:_QB45"
MenuTxt$(1) = " 1. Test1 "
MenuTxt$(2) = " 2. Test2 "
MenuTxt$(3) = " 3. Test3 "
MenuTxt$(4) = " 4. Exit "
''在屏幕上显示菜单(如果标题用些彩色的话效果会很好)
COLOR 4
LOCATE 3, 25: PRINT MenuTxt$(i)
COLOR 7
FOR i = 1 TO 4
LOCATE 5 + i, 30: PRINT MenuTxt$(i)
NEXT i
''把光条停留在第一行,并且记住它(当燃你也可以停留在别的行,方便自己做成子程序)
Mx = 1 ' '这个是要停留的行 (在实用中最好定义成整数)
MxOld = Mx ' '这个是记住的行
COLOR 0, 7 ' '用颜色设置语句来加亮你要选择的行
LOCATE 5 + Mx, 30: PRINT MenuTxt$(1)
''进入一个循环判断
DO
WHILE k$ = "": k$ = INKEY$: WEND' '当键盘有键按就退出小循环
IF k$ = CHR$(0) + "P" THEN Mx = Mx + 1' '按的是下键就加1
IF k$ = CHR$(0) + "H" THEN Mx = Mx - 1
IF k$ = CHR$(13) THEN EXIT DO' '按回车就退出
IF Mx > 4 THEN Mx = 1' '超过4行光条就回到第一行
IF Mx < 1 THEN Mx = 4' '这里最大最小的行可以用个变量来定义会更方便
COLOR 7, 0' '把以前旧的行还原
LOCATE 5 + MxOld, 30: PRINT MenuTxt$(MxOld)
COLOR 0, 7' '显示新的行
LOCATE 5 + Mx, 30: PRINT MenuTxt$(Mx)
MxOld = Mx: k$ = ""' '把当前新的记住
LOOP
COLOR 7, 0
LOCATE 10, 5
''根据选择执行
SELECT CASE Mx
CASE 1
PRINT " You Select is ";
COLOR 29, 0
PRINT 1
CASE 2
PRINT " You Select is ";
COLOR 29, 0
PRINT 2
CASE 3
PRINT " You Select is ";
COLOR 29, 0
PRINT 3
CASE 4
PRINT " Exit Program "
END SELECT
COLOR 7
END
1、最简单的菜单选择(做了一个要显示的菜单后,用的是输入语句来判断你的选择 )
2、复杂一些的就是用键盘的上下键来选择菜单,(在后面我会讲到)
1、简单的
做了一个要显示的菜单后,用的是输入语句来判断你的选择,就象下面的这个
LOCATE 10,10:PRINT "1.TEST1"
LOCATE 11,10:PRINT "2.TEST2"
INPUT "INPUT ",M
IF M=1 THEN....
IF M=2 THEN....
.....
这个是个最简单的选择方式,不过,这个我们还可以改进,这个你输入以后还得按个回车键,如果把INPUT "INPUT ",M 这个语句改成M$=INPUT$(1):这样你只要一按1或者是2就会选择,当然还得把字符转换成数字,所以加上这个语句m=val(m$)
当然没有哪个成熟的软件会用这个方式来让大家来选择菜单项!不过这种方式代码少,写给自己或者很少人用用还是可以!
我们当然希望能用键盘上的上下键来选择菜单,那样就更人性化一些!
2、复杂些的!
我就用文本下的菜单选择来举例说明这个方法!
在这个大致上有这么几步
1,在屏幕上显示要选择的菜单项
2,一些初始化工作,把选择光条停在菜单的某一行中,记住这行
3,进入一个循环,对键盘进行捕捉(如果按的是下,就把行加一,如果是上就减一,如果按回车就退出循环)
4,先把旧的光条还原,再把光条停在新的行,(以前记住的旧行就更新)
5,根据选择执行相应的功能(最好用选择语句)
请看下面我给出的代码
CLS
''用一个数组来定义这些个菜单(这样选择会很方便)
DIM MenuTxt$(4)
MenuTxt$(0) = "Menu Demo 1.0 XXX:_QB45"
MenuTxt$(1) = " 1. Test1 "
MenuTxt$(2) = " 2. Test2 "
MenuTxt$(3) = " 3. Test3 "
MenuTxt$(4) = " 4. Exit "
''在屏幕上显示菜单(如果标题用些彩色的话效果会很好)
COLOR 4
LOCATE 3, 25: PRINT MenuTxt$(i)
COLOR 7
FOR i = 1 TO 4
LOCATE 5 + i, 30: PRINT MenuTxt$(i)
NEXT i
''把光条停留在第一行,并且记住它(当燃你也可以停留在别的行,方便自己做成子程序)
Mx = 1 ' '这个是要停留的行 (在实用中最好定义成整数)
MxOld = Mx ' '这个是记住的行
COLOR 0, 7 ' '用颜色设置语句来加亮你要选择的行
LOCATE 5 + Mx, 30: PRINT MenuTxt$(1)
''进入一个循环判断
DO
WHILE k$ = "": k$ = INKEY$: WEND' '当键盘有键按就退出小循环
IF k$ = CHR$(0) + "P" THEN Mx = Mx + 1' '按的是下键就加1
IF k$ = CHR$(0) + "H" THEN Mx = Mx - 1
IF k$ = CHR$(13) THEN EXIT DO' '按回车就退出
IF Mx > 4 THEN Mx = 1' '超过4行光条就回到第一行
IF Mx < 1 THEN Mx = 4' '这里最大最小的行可以用个变量来定义会更方便
COLOR 7, 0' '把以前旧的行还原
LOCATE 5 + MxOld, 30: PRINT MenuTxt$(MxOld)
COLOR 0, 7' '显示新的行
LOCATE 5 + Mx, 30: PRINT MenuTxt$(Mx)
MxOld = Mx: k$ = ""' '把当前新的记住
LOOP
COLOR 7, 0
LOCATE 10, 5
''根据选择执行
SELECT CASE Mx
CASE 1
PRINT " You Select is ";
COLOR 29, 0
PRINT 1
CASE 2
PRINT " You Select is ";
COLOR 29, 0
PRINT 2
CASE 3
PRINT " You Select is ";
COLOR 29, 0
PRINT 3
CASE 4
PRINT " Exit Program "
END SELECT
COLOR 7
END