按键精灵吧 关注:491,333贴子:919,729
  • 8回复贴,共1

【新手进阶】-如何写好脚本、优化代码-第二篇:子程序

只看楼主收藏回复

这是第一篇的连接:http://tieba.baidu.com/p/3686198525?pid=66676692488&cid=0#66676692488
写一个脚本时,要尽可能的去优化,不仅能缩短代码,使代码更容易看懂,还能提高运行速度,虽然对计算机来说花费的时间几乎可以忽略不计,但是这仍旧是不可缺少的。
我有个徒弟,喜欢把简单的东西复杂化,一个简单的操作能写的很长,故意让人看不懂,还沾沾自喜。我只能说这货根本就没理解写代码是为了什么,不去想着怎么优化,却想着怎么复杂化让别人看不懂,也没谁了。。。
有些扯远了,回到正题,之所以说这么多就是告诉你们,优化是必不可少的。现在的人大部分都是只要代码能跑起来就万事大吉,根本没想过怎么去优化= =!
好了我们来说说一个子程序吧,有没有发现子程序调用的时候后面可以加括号?比如call 子程序 ,call子程序(),你会发现这个括号加不加都可以,其实这个就是一个子程序的返回值,可以通过判断子程序的返回值来达到想要的效果,如果不知道返回值的可以去百度看看,我就不多说了
首先看下面这段代码
Call 子程序(10)
Sub 子程序(a)
MessageBox a
End Sub
运行之后你就会发现,弹出来的就是10,写成其他的数字弹出来的也会是你写的数字,如果你看不懂,没关系,你可以这么看
a = 10
Call 子程序(a)
Sub 子程序(a)
MessageBox a
End Sub
因为a=10,所以子程序里面弹出来的就是10。


Call 子程序("若火")
Sub 子程序(a)
MessageBox a
End Sub
运行之后弹出来的就是“若火”了,为什么要加双引号呢?因为“若火”是字符串,字符串必须要加双引号。为什么前面的的Call 子程序(10) 没有双引号呢?,因为“10”是数值类型,这个类型我简单说说,有文本型,也就是字符串,有数值型,逻辑型等等,其他的就不多说了。数值是不需要双引号的,如果加了双引号那就是文本型了,不能进行加减乘除了。
按照下面的要求写出代码:
找图片1,找到后鼠标左键点击
然后找图片2,找到后鼠标右键点击,然后弹出坐标
在找图片3,找到后鼠标左键点击
找图片4,找到后左键点击,然后弹出坐标
找图片5,找到后鼠标右键点击,弹出坐标
上面5个找图,如果某一个图找不到就一直找,直到找到为止,才能继续找下一个图片
如果按照正常的写法,估计要写很多吧,用子程序就可以很好的解决
Call 找图("图1", "左键", 0)
Call 找图("图2", "右键", 1)
Call 找图("图3", "左键", 0)
Call 找图("图4", "左键", 1)
Call 找图("图5", "右键", 1)
//////////////////////////////子程序///////////////////////////////
Sub 找图(图片名, 鼠标点击, 弹出坐标)
Do // 无限循环体
Delay 100 //循环开头建议加一个延迟命令
FindPic 0, 0, 1024, 768, "Attachment:\" & 图片名 & ".bmp", 0.9, intX, intY
If intX > 0 And intY > 0 Then
MoveTo intX, intY
Delay 100
If 鼠标点击 = "左键" Then
LeftClick 1
ElseIf 鼠标点击 = "右键" Then
RightClick 1
End If
If 弹出坐标 = 1 Then
MessageBox "坐标为" & intX & "x " & intY
End If
Exit do //找到图完成操作后退出无限循环
End If
Loop
Delay 300 //退出无限循环后这里加一个延迟
End Sub
好了,今天就写到这里吧,暂时也不知道应该继续写什么了


-------------------------------------------------------------------------------------------------- 按键学院吧


IP属地:浙江1楼2015-05-28 20:01回复
    备用楼


    IP属地:浙江2楼2015-05-28 20:01
    回复
      子程序和函数不是一样吗,


      IP属地:浙江来自Android客户端3楼2015-05-28 20:18
      收起回复
        已收藏。谢谢楼主分享


        IP属地:湖北来自Android客户端5楼2015-05-31 15:55
        回复