按键学院吧 关注:346贴子:4,095
  • 23回复贴,共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 19:57回复
    2楼备用


    IP属地:浙江2楼2015-05-28 19:58
    收起回复
      2025-07-31 16:00:19
      广告
      不感兴趣
      开通SVIP免广告
      call子程序(),
      你会发现这个括号加不加都行,其实这个就是一个子程序的返回值。
      纠正一下,
      call子程序(),调用行的(),是填写子程序的参数。参数又叫获取型局部变量。
      子函数才有返回值。
      子程序无返回值。
      这是它们的区别。


      来自手机贴吧3楼2015-05-28 20:21
      收起回复
        子函数 有2种变量。
        获取型变量(又叫参数,就是括号内的数字,主程序对子程序传值用的)。
        运算型变量(又叫局部变量,是子函数/子程序内部的变量,用来进行内部运算的)。
        返回值(进行运算后,子函数对主程序传值用的。子程序没有返回值。
        在vbs中,函数名就是返回值。)。
        函数的调用格式:Call 子函数名(参数列表)
        返回值格式:函数名= **,用函数名来接收返回值。例子:
        Function 计算(a,b,c)//"计算"是函数名。
        dim d,e,f
        d = a
        e = a + b
        f = a + b + c
        计算 = f //返回值。
        End Function
        //
        call 计算(10,11,12) '填参数。10,11,12是参数。
        QQ = 计算 + 200
        MsgBox QQ
        //
        填写参数,是在函数调用行中进行的。比如
        call 计算(10,11,12)。10,11,12就是参数。
        子函数中,a,b,c是获取型变量,又叫参数,用来获取外部信息。
        子函数中,d,e,f是运算型变量,用来参加运算的。
        返回值/函数名/ 可以看做一个变量,可以拿来加减乘除运算。
        ………………
        ………………
        做一个时间随机值。
        Function 随机值()
        Randomize
        随机值 = Int((2000 - 1000) * Rnd + 1000)
        End Function
        //
        Do
        TracePrint "点击A点"
        Delay 4000 + 随机值
        TracePrint "点击B点"
        Delay 5000 + 随机值
        Loop
        按键精灵工程师 5-12 16:18
        把多线程的脚本,比喻成十个电台的频道,
        (饿鬼电台,地狱电台,畜生电台,,修罗频道,人间频道,天人频道)
        (罗汉,缘觉,菩萨,佛陀)
        用DimEnv声明的环境变量就像是 如来佛祖,在所有佛,菩萨中他是老大,他说了算。
        每种变量,都有自己的地盘和权限。


        来自手机贴吧6楼2015-05-29 15:19
        收起回复
          仙境,你开个扣扣qun,当群主。按键学院吧的。怎么样??


          来自手机贴吧7楼2015-06-04 15:00
          收起回复
            我加入里面,有空也帮忙答题。


            来自手机贴吧8楼2015-06-04 15:01
            回复
              小合作要放下态度,彼此尊重,大合作要放下利益,彼此平衡;一辈子的合作要放下性格,彼此成就。一味地索取,不懂付出;或者一味任性,不知让步,到最后必然输得精光。共同成长,才是生存之道。合作的秘密,就是永远不要免费咨询别人问题,永远不要让自己的合作伙伴吃亏……


              来自手机贴吧9楼2015-06-04 17:00
              回复
                做好后,你就是二当家。


                来自手机贴吧10楼2015-06-04 17:04
                回复
                  2025-07-31 15:54:19
                  广告
                  不感兴趣
                  开通SVIP免广告
                  群号多少


                  来自Android客户端12楼2015-09-16 23:08
                  回复
                    有木有中级的教程


                    来自Android客户端13楼2015-09-17 12:57
                    收起回复
                      额,我用手机写的,有木有QQ群


                      来自Android客户端14楼2015-09-17 14:40
                      收起回复
                        有内存方面的吗


                        IP属地:广西15楼2016-02-08 23:39
                        收起回复