1、 第 1 课:零编程学会补红蓝脚本的制作补红蓝脚本的制作我们应该知道,按键精灵拥有一只眼睛,一双手,眼睛可以帮我们查看屏幕上的颜色,而手可以帮我们不断的点击键盘鼠标。相信多数的朋友对于这双手的操控已经灵活自如了,而要编写出功能强大的脚本,没有眼睛可不行。本教程以此出发,教会读者使用这双眼睛,更好的控制机器人的手臂。本章用到的按键精灵基础命令:1、 IfColor 100,10,112233,0EndIf复制代码 IfColor 做为按键精灵最重要的颜色判断语句(眼睛),有着良好的易用性与理解性。语句详细解释:ifColor - 如果颜色100 - 屏幕 X 象素10 - 屏幕 Y 象素1122
2、33 - 16 位进制的颜色(以两位为一种颜色分别代表蓝、红、黄)0 - 相等(1 为不相等。2 为模糊匹配)解释:如果在坐标 100,10 的颜色为 112233 则执行。后面的 EndIf 做为 IfColor 的配对。使用方法:控制命令-抓点坐标/颜色-在面图上点左键,加入到坐标点-退出抓点-选好坐标颜色后-插入2、 /注释复制代码解释:“/”为按键精灵的注释在“/”后面所跟写的任何文字都将被按键忽略。3、 Rem sGoto s复制代码解释:“Rem s”可以理解为在改位置做一个标记 s。而“Goto s”则是无条件跳到此标记执行。这里补一下程序运行概念:每行代码都有行号,脚本解释器要
3、一行一行代码的执行下去,知道执行最后一行代码或碰到 EndScript 语句(该语句在后面会有讲解),没有任何可执行了,程序就退出。4、 Delay 100复制代码解释:暂停 100 毫秒(1000 毫秒 等于 1 秒)看完了概念,我们来实际编写一个游戏的补红补蓝脚本,验证我们是否已经学会了该课的内容。首先打开按键精灵,并进入游戏,用 PrintScr(一般在 F12 右边第一个)键截取游戏图象。然后切换到按键精灵程序。按 ifcolor 的使用方法来抓取我们的血条颜色坐标。并且插入到代码内。此时,我们可以看到在按键精灵里多出了三条语句(在源代码那边哦): IfColor 126,19,4a5
4、110,0ElseEndIf复制代码其中 else 是否则的意思,就是说如果上面的 ifcolor 不成立,则执行 else下面的语句。我们先写个测试代码,看看取得的颜色是否正确 IfColor 126,19,4a5110,0MessageBox “颜色正确“ElseMessageBox “颜色不对“EndIf复制代码如果只弹出“颜色正确”那么恭喜你,您离成功很近了。如果颜色不对,请检查是不是颜色那里出现错误。直到弹出“颜色正确”就可以继续学习了。我们继续。修改代码如下: Rem sIfColor 126,19,4a5110,1/使用 F5 的红药KeyPress 116,1EndIfDela
5、y 100Goto s复制代码注意以上代码。增加了 remgoto,持续不断的执行上面的过程。原来的ifcolor 最后的 0 改为了 1(1 为不等于)。加了暂停的 Delay(不让脚本的 CPU 占用率过高)。这时,你的这段代码已经可以补红了。补蓝的代码请自行加入,做为作业。好了,这节已经结束。大家多注意休息,不要劳神哦 什么?代码不好使?颜色不对。好好,我加个补充说明。补充说明:如果按步骤写了以上代码并不好使,那么可能是颜色出现问题。解决方法给出几个供参考1、取血条底色,如果颜色等于底色则执行加血的操作。2、用模糊取色,如果颜色大约等于血色则,否则加血。或,如果颜色大约等于底色则加血(这
6、里是模糊匹配和 else 的运用)以上两点也为各游戏常遇到问题的解决办法。多多实验,总会成功的。最后说一点,按键精灵是不区分大小写的。可以随便写过程语句的学习接第 1 课,零编程学会补红蓝脚本的制作本节想学会使用 Sub 和 GoSub 语句的使用,以及对第 2 节没有解释清楚的地方加以补充。Sub 作为一个过程语句的关键子,在代码重用和逻辑编排上启着致关重要的作用。先看一下关键字的说明: Sub 过程名/这里的部分就是过程体(自命名,可以看的懂就好)了。可以添加执行代码。Return复制代码解释:过程名可以随意更改,启一个可以很容易理解的名字。是书写代码的良好习惯,也可以使用中文。Retur
7、n 语句的作用是返回调用点。GoSub 过程名解释:gosub 固名思意,到 sub。sub 可以理解为过程、函数、方法。叫法不同,原理一样。我们改装上次讲过的补红蓝脚本: Sub mainRem sGosub add_hpGosub add_mpDelay 100Goto sReturnSub add_hpIfColor 126,19,4a5110,1KeyPress 116,1EndIfReturnSub add_mpIfColor 126,19,4a5110,1KeyPress 117,1EndIfReturn复制代码以上代码组成一个完整的体系,并且结构合理,清晰。易于看懂。通常会把执行
8、单一功能的一块代码做为一个 sub。比如补红蓝脚本,一个主控 sub,一个补红,一个补蓝。要修改哪部分,只要在对应的 sub 中修改即可。sub main 只是一种编程习惯,在按键精灵里,如果没有碰到 goto、gosub 这两个语句(另外还有几个会发生跳转,以后章节就讲到)是不会发生跳转代码行号的,只是顺序执行,在碰到 sub 时,直接忽略该行语句,执行下一条。我们来看下面代码: Sub mainGosub testReturnMessageBox “测试“Sub testMessageBox “测试“Return复制代码该代码在按键精灵 5.2 以前的版本中(包括 5.2)都会执行不正常。
9、5.2 版的执行结果为一直弹出“测试”提示框,而不是只弹出一次。这个错误在 5.3 版以及后续版本,都已经改正,所以在学习当中,尽量使用最新版本的按键精灵,以后的教程也都根据按键精灵最新的 5.6 版来讲解。代码含义补充说明: KeyPress 116,1复制代码解释:KeyPress - 按某一个键的关键字(在键盘选项卡里可以找到)116 - F5 键的虚拟键值码(在键盘选项卡里最下面左边的文本框可以按下键盘各种键,查询虚拟键值码。也可反之)1 - 按 1 次(改成 2 就是按两下)以上说明适合 keydown(按键按下)、keyup(按键抬起)、leftclick(鼠标左键点击)等变量的含
10、义很多初学者都会迷惑,什么是变量。个人觉得变量是编程入门的一道门槛。介绍变量概念的文章很多,这里先做易于理解的比喻,再从语言层面上进行讲解。如果你已经了解了变量的含义,则请跳过此节。变量,你可以理解为超市的存包柜。每一个变量对应一个柜子。而柜子的号码就是变量名。想要哪个柜子里的东西(数据),就对应的找哪个变量名。变量名可是你自己命名的哦我们看例子: a=1复制代码把数字 1 放进柜子 a 中。 b=“你猜对了吗?“复制代码把字符串 你猜对了吗? 放进柜子 b 中。字符串必须用“包含。 dc=3.14159265复制代码把小数放进柜子 dc 中。 num1=1num1=33num2=55sum=
11、num1+num2复制代码首先把 33 和 55 分别放入 num1 和 num2 中。然后把他们取出来,做加法操作(加法是由 CPU 来处理的),把结果放在 sum 中。结果 sum 等于 88 num1=1num1=33复制代码 num1 被给值为 1,然后又给值为 33。此时,num1 中存储是的 33。1 就被覆盖掉了。没有了:)sum=sum+1这句不等同于数学的加法,也是初学者不容易理解的地方。我们只要想,把 sum 拿出来和 1 做加法,再放回 sum 中就可以了。sum 原来的值是 88,做完加法后,sum 等于 89。 pig=1pig=pig*3+pig复制代码能猜出 pi
12、g 最后等于几么?1*3+1。结果是 4好,相信到这里,你应该明白变量是怎么回事了。变量的加减法已经会发,乘除法作为作业喽。更高级的应用,将来以后的章节进行讲解。下面大致说一下 C 语言中的变量。C 语言比较接近于系统底层,更易于理解变量的机制。当代码中有 a=2 的时候,则在内存中分配一小块区域来存储这个变量,然后把 2 放在该内存的区域中。当执行 b=a 的时候,则通过变量名 a 提取出它的值数字 2。在放在 b 在内存中的区域中!当然,在语言实现层面也并非我上面说的寥寥几句,但这都并不是我们关心的。我们只要明白,变量、变量名是什么,以及怎么给他赋值,怎么提出他的值就可以了,毕竟我们要的只
13、是应用。如果有兴趣知道更多,使用搜索引擎就可以得到你想要的答案了。条件语句的使用所谓条件语句,即“满足”或“不满足”,也可以理解为“是”或“否”。比如在上几节说过的 ifcolor,既属于此类。按键精灵中,条件语句只有两个:ifcolorelseendif 和 ifelseendififcolor 语句不再讲解,这节把重点放 if 上。也为巩固上一节中变量的知识。if 语句的格式:If 条件表达式/这里可以写功能代码Else/这里可以写功能代码EndIf解释:if 后面跟一个空格键,然后写条件表达式。如果条件满足,则只执行 if 到 else 中的代码,否则就执行 else 到 endif 中
14、的代码。这里是很明显的“是”与“非”划分。所谓“条件表达式”,既条件的结果只有两个值:“真/假”。如:1=1(真) 1=2(假) 12(假) 13MessageBox “不成立“ElseMessageBox “成立“EndIf复制代码把上面代码放在按键精灵中执行,可以直观的看到结果,然后在把“”换成“ 大于号 当左值大于右值时,返回真,否则返回假= 大于等于号 当左值大于或者等于右值时,返回真,否则返回假= 小于等于号 当左值小于或者等于右值时,返回真,否则返回假可以用在数值计算中的符号说明:+ 加 两个数字相加,可以是小数,可以是正负数。- 减 两个数字相减,可以是小数,可以是正负数。* 乘 两个数字相乘,可以是小数,可以是正负数。/ 除 两个数字相除,可以是小数,可以是正负数,但除数不能为 0。mod 取余 两个数字相余,必须是整数。字符串相连的符号说明:& 连接符,音同:“And” 该连接符的左右必须有变量或常量(常量的定义很简单,就是固定的数或字符串,比如 1,或者“简单游“。都是常量,不可变)+ 连接符 该连接符必须两边均为字符串才可使用。一般不用。还有一个问题没有交代,逻辑运算符。留到以后说吧。s