3、
Rem s
Goto s
解释:“Rem s”可以理解为在改位置做一个标记s。而“Goto s”则是无条件跳到此标记执行。这里补一下程序运行概念:每行代码都有行号,脚本解释器要一行一行代码的执行下去,知道执行最后一行代码或碰到EndScript语句(该语句在后面会有讲解),没有任何可执行了,程序就退出。
我们改装上次讲过的补红蓝脚本:
Sub main
Rem s
Gosub add_hp
Gosub add_mp
Delay 100
Goto s
Return
Sub add_hp
IfColor 126 19 4a5110 1
KeyPress 116 1
EndIf
Return
Sub add_mp
IfColor 126 19 4a5110 1
KeyPress 117 1
EndIf
Return
以上代码组成一个完整的体系,并且结构合理,清晰。易于看懂。通常会把执行单一功能的一块代码做为一个sub。比如补红蓝脚本,一个主控sub,一个补红,一个补蓝。要修改哪部分,只要在对应的sub中修改即可。
sub main只是一种编程习惯,在按键精灵里,如果没有碰到goto、gosub这两个语句(另外还有几个会发生跳转,以后章节就讲到)是不会发生跳转代码行号的,只是顺序执行,在碰到sub时,直接忽略该行语句,执行下一条。
我们来看下面代码:
Sub main
Gosub test
Return
MessageBox 测试
Sub test
MessageBox 测试
Return
该代码在按键精灵5.2以前的版本中(包括5.2)都会执行不正常。5.2版的执行结果为一直弹出“测试”提示框,而不是只弹出一次。这个错误在5.3版以及后续版本,都已经改正,所以在学习当中,尽量使用最新版本的按键精灵,以后的教程也都根据按键精灵最新的5.6版来讲解。
先来做一个实际的例子:
If 1>3
MessageBox 不成立
Else
MessageBox 成立
EndIf
把上面代码放在按键精灵中执行,可以直观的看到结果,然后在把“>”换成“<”试一下。可以加深对条件语句的理解!
这个例子并没有实际作用。但考虑做为导读,直观性比较强。下面来做一个稍微复杂的:
n=1
Rem s
n=n+1
If n mod 2=0
VBSCall Call MessageBox("偶数:" & n)
EndIf
Goto s
你能只凭理解力就可以猜出以上代码的结果么?猜不出就把他放在按键精灵下面执行一次,看看效果!
这里有几个知识点:
1、rem s和goto s组成一个循环体,不断执行。
2、n=n+1让n这个变量在每次循环时自身数值递增1。(对这句不大理解的,可以参看前一节)
3、n mod 2首先解释一下mod的意义,mod是取余。(余是什么?如果你有小学2年级的书,可以翻查一下,我在后面也会有对比讲解)
4、&代表字符串连接符。
再看一个字符串对比的例子:
hello="你好"
VBSCall name=InputBox("请输入姓名:")
if name="简单游"
VBSCall Call MessageBox(hello & name & ",身份已确认")
else
VBSCall Call MessageBox(hello & name & ",身份无法确认")
endif
所谓逻辑运算符,只是操作“真”或“假”,用在if和while语句中。
在VB,VBS,按键精灵里只有三个逻辑运算符,分别是(字母不区分大小写)And(与)、Or(或)、Not(非)
下面我们用1和0来表示真假值(非0为真)
b1=1
b2=0
b3=1
b1 and b2//与的关系,当b1和b2同时为真,则结果“真”(该结果为假)
b1 or b2//或的关系,当b1和b2只要有一个为真,则结果“真”(该结果为真)
not b1//非的关系,如果b1是真,则结果是“假”,反之则是“真”(该结果为假)
上面三个理解之后,多看几个例子:
1、
if b1 and b2
//不执行
endif
2、
if b1 and b2 and b3
//不执行
endif
3、
if b1 or b2 or b3
//执行
endif
4、
if not b2
//执行
endif
更多的,希望读者自己多试试,下面一个测试的方法,只要改变表达式就可以了(while循环也请自己测试):
if b1
vbscall call messagebox("真")
else
vbscall call messagebox("假")
endif