[个人备忘]手机按键下的大型项目的一点点汇总

最近根据去年的一个项目的基础上调整出了一个新游戏的脚本 期间遇到了一些以前没注意的问题  把以前和最近的一点经验汇总起来拿来随便说说

注意:大部分体悟都是针对大型项目而言 你如果在小脚本里面使用很多都是完全没必要的甚至是自己给自己找麻烦

一.代码重用(这个算老生常谈了)

所谓代码重用 其实很简单 核心就是尽量不要反复进行重复的操作 在手机按键下 涉及的方面就比较多了 比如 图色坐标数据变量化 点击坐标数据函数化  重复操作的函数化等等

(1)图色坐标数据变量化(多点找色 多点bi色 找图 点击坐标等功能的封装 把每个找图找色都变为全局数组变量)

我们常见找图 比如 下面这个是找到登录按钮的按键源码

FindPic 100,100,300,2000,"Attachment:主界面_登录按钮","000000",0,0.9,intX,intY
If intX > -1 And intY > -1 Then 
    //找到的情况下
    TracePrint intX
    TracePrint intY
    Tap intX, intY//点击登录按钮
Else 
    //找不到的情况
End If

只是找到1个登录按钮 我们至少需要4行,如果我们的脚本很多操作都需要点击 主界面上的这个 登录按钮 比如我们要在签到操作 退出账号操作 这2个模块里面点击3次登录按钮 我们需要把上面的代码重复插入到这2个模块3个位置  如果是大型代码 那么可能后面加个0都是有这个可能的 这个操作量已经很麻烦了    假设半路这个登录按钮位置发生了变化 或者自身颜色有变动 ,我们需要重复调整这个这部分代码4次

如果把图色数据写入到一个公共数组变量里面

//定义这个登录按钮的图色数组 只需要在脚本开始声明一次即可
Dim 找图_主界面_登录按钮=array(100,100,300,2000,"Attachment:主界面_登录按钮","000000",0,0.9,100,"主界面_登录按钮")

//这里
If 找图(找图_主界面_登录按钮) > -1 Then 
    
End If

Function 找图(找图数组)
    Dim 结果,全组,分组
    imgid = -1  //重置下这个变量 避免上面找图留下的值
    结果 = FindPic(找图数组(0),找图数组(1),找图数组(2),找图数组(3),找图数组(4),找图数组(5),找图数组(6),找图数组(7),intX,intY)
    If 结果 > -1 Then     
        全组 = Split(找图数组(4), "|") //分析出当前找到的是哪个图片 对应的图片名字        
        TracePrint "找图:=[" & Replace(全组 (结果),"Attachment:","",1) & "]=[找到]了,序号[" & 结果 & "],坐标[" & cstr(intX) & ", " & cstr(intY) &"]"        
    Else
        TracePrint "找图:-<" & 找图数组(9) & ">- 都没找到"
    End If
    //返回值
    找图=结果
    imgid=结果
End Function

声明和下面的函数只需要定义一次就好  把这个登录按钮的图色转化成公共数组变量来调用 我们就把原来的找图点击代码缩短成2行 而且一旦登录按钮图色变化位置变动 我们只需要在声明该登录按钮的公共数组变量里面调整下 脚本里面所有用到这个图色数组的变量就都随之变动(多点找色 多点bi色 坐标也是这个思路)

小知识:在大型项目里面 代码太多一万两万行很正常,我们在如此多的代码里面如何能快速找到自己需要的找图找色坐标数组变量呢

因为手机按键里面 他的智能提示变量功能一直不够完善 一旦变量里面存在汉字 会无法自动提示出来  对于我们使用这些数组变量化的找图找色坐标的变量而言难度就增大了 所以我们在声明这些坐标数组变量的时候要非常严格 我个人的命名规则是  

调用的函数名_界面名(窗口名)_组件名

比如上面的 我们要给游戏主界面的 登录按钮命名 ,,因为调用的是找图函数来查找 所以  先是

找图_

是什么界面名呢 是游戏主界面

找图_游戏主界面

是游戏主界面的什么组件呢  是登录按钮 所以完整的是

找图_游戏主界面_登录按钮

如此命名的话就算是在大型项目里面 没有智能提示这些繁多的找图着色坐标的数组变量 我们依然可以看到这个界面就知道要使用什么数组变量

其实最好的办法是把 找图找色坐标全部函数化  手机按键下的函数调用的智能提示是非常完善的 不像变量的智能提示那么便秘 但是这样会导致脚本里面函数过多 不建议


(2)重复操作的函数化

这个就是习惯上的代码重用了 拿我自己最近的例子来看  注意 只有在大型项目里面才要仔细考虑这个方面 100来行的代码根本没有必要考虑

一开始 客户要求我提供一个跑到新手村然后在那里扔特殊装备的操作  于是我就把这个操作写完 用 跑位到新手村扔装备() 函数命名了 大约占用60来行

过了几天  客户要求我开发一个跑到沙巴克的脚本 并且在沙巴克指定坐标位置停下的操作 我又根据需求写完 以 跑位到沙巴克指定坐标() 命名 大约有50多行

过了1个周 根据需求  客户要求我开发一系列的跑位 因为游戏内 尽量跑到人稀少的地方下线 避免被杀和有心人捣乱  于是我又写了 跑位到祖玛一层() 跑位到沃玛一层() 跑位到魔龙() 跑位到XXX 让客户可以根据需求自己选择跑位到的地图和地图上停驻的坐标

由此可见 其实这些函数 他们的都有类似的跑位动作 不过是有的是跑位到某处进行某个操作  有的是到指定地图的指定坐标下线 有的是跑到指定地图拣装备等等 所以最后我就把这些所有的独立的跑位混合成一个单独的操作  跑位(地图序号)  根据序号来调整跑位的地图 比如跑位(1) 就是跑到新手村 跑位(2) 就是跑到比奇 其他以此类推  然后汇总一个 跑位后操作(操作序号) 来处理跑位后的指定操作

原来的所有的跑位相关操作函数      跑位到新手村扔装备()       跑位到沙巴克指定坐标()    跑位到祖玛一层() 跑位到沃玛一层() 跑位到魔龙() 跑位到XXX 。。。

变为了现在的 跑位(地图序号)+跑位后操作(操作序号)

代码重用 不单单是节约是空间  更是简化了操作  把一个个的复杂操作拆分成几个零件 这些零件可以相互拼装 构成其他功能  不过大型项目下才能体现出价值 普通脚本无需想太多

还有 这个故事告诉我们 重复操作的函数化的好处  客户提出修改意见你必须要钱 不然累死你

二.界面UI的调整

大型项目UI界面可能异常的庞大  如果要修改 一页根本看不全整个UI的结构 而且UI代码 也无法自动格式化自动缩进排列 也不支持查找功能 如果是大量的UI代码 修改起来很吃力 我个人习惯如下

修改前 备份一下 然后把UI代码复制到notepad++ 里面  虽然notepad++无法创建组件 也无法自动缩进和格式化 但是可以查找 也可以从整体上浏览结构 算是勉强有点帮助的路子

三 大型项目下如何快速到达需要的位置

个人基本上是靠3个办法

(1)手机助手上面的选择函数输入框 而且这个支持查找指定函数。如果我们在一些重要的固定区域放置一些空的函数 通过这个方法就可以快速跳转到对应的重要区域

image

image

比如我在声明变量的区 定义了一个空函数declaration 我每次需要到声明区找变量的时候 查找decla就找到这个空函数跳转过来就可以了

(2)稍微记下某些重要位置的行号即可 比如我要到声明区找找其他变量  但是看完就要回到这个位置 我先记住当前 行号17091

image

我看完声明区变量

image

就可以跳转回来了

(3)就是查找功能了 查找对应的字符串 这个不说了

四 大型项目下 错误处理的更加细化 这个也不说了

123

猜你喜欢

转载自www.cnblogs.com/zjl8455482/p/10914796.html