精易论坛

标题: 找图死循环实时检测崩溃 [打印本页]

作者: Wesley咚咚    时间: 2022-6-25 18:42
标题: 找图死循环实时检测崩溃
追求速度,这个死循环运行一会就被退出去了(易语言自动触发:被调试易程序运行完毕),不知道什么原因,代码写的很乱,大佬帮忙优化一下
  
窗口程序集名保 留  保 留备 注
程序集1   
变量名类 型数组备 注
线程ID整数型  
找图高仿大漠  
intX整数型  
intY整数型  
句柄整数型  
值1整数型  
值2整数型  
循环逻辑型  

子程序名返回值类型公开备 注
__启动窗口_创建完毕  

子程序名返回值类型公开备 注
_按钮_确认_被单击  
音乐_播放 (“二技能好了.wav”, “2”)
找图.绑定窗口 (336544)  ' 第一步务必要记得绑定窗口句柄
找图.图片路径 (“D:\易语言\图片保存”)  ' 找图功能需要指定保存bmp图片的路径
循环 = 真
线程_启动 (&找图监控, , )
计次循环首 (100000000, )
值2 = 找图.FindMulColor_查找指定区域内的所有颜色 (268, 384, 391, 393, “27252d|ffe4f4|f197d0|a57096|ecb1de|ffbaec|f5c5e2|ebb8e3|9e6e93|e084c2”, 80)
如果真 (值1 ≠ -1 值2 = 1)
音乐_暂停 (“2”)
延时 (490)
音乐_播放 (“二技能好了.wav”, “2”, )

处理事件 ()
延时 (30)
计次循环尾 ()
子程序名返回值类型公开备 注
找图监控  
线程_初始化COM库 ()
判断循环首 (循环)
值1 = 找图.FindPic_找图返_单坐标 (719, 270, 769, 322, “释放二技能.bmp|释放二技能2”, “303030”, 70, 0, intX, intY)
延时 (10)
判断循环尾 ()
线程_取消COM库 ()


作者: 一C    时间: 2022-6-25 19:00
加个  处理事件  循环里面
作者: Wesley咚咚    时间: 2022-6-25 19:27
一C 发表于 2022-6-25 19:00
加个  处理事件  循环里面

不行,有事件没有延时一下就崩了,只有延时30秒左右就蹦了,有延时有事件能相对坚持久一会,但很快还是会崩
作者: 闻v风    时间: 2022-6-25 19:29
“释放二技能.bmp|释放二技能2”
“释放二技能.bmp|释放二技能2.bmp” 少后缀了。
作者: 闻v风    时间: 2022-6-25 19:39
另外。可以自己添加一个子程序,找图片名,改成找图片字节集数组,启动软件时,就把需要找的图先读到字节集数组里面。,否则原本的每次读取都得去读一次图片文件到字节集
简单搞了下,你试试看能不能用吧。

  
子程序名返回值类型公开备 注
FindPic_找图返_单坐标_字节集整数型 返回找到的图片的序号,从0开始索引.如果没找到返回-1
参数名类 型参考可空数组备 注
X1整数型x1 整形数:区域的左上X坐标
Y1整数型y1 整形数:区域的左上Y坐标
X2整数型x2 整形数:区域的右下X坐标
Y2整数型y2 整形数:区域的右下Y坐标
图字节集数组字节集图片名,可以是多个图片,比如"test.bmp|test2.bmp|test3.bmp"    图像数据必须是24位格式无压缩的BMP图像
颜色色偏文本型 :颜色色偏比如"203040" 表示RGB的色偏分别是20 30 40 (这里是16进制表示)
相似度整数型相似度,取值范围 1 到 100
查找方向整数型:查找方向 0: 从左到右,从上到下 1: 从左到右,从下到上 2: 从右到左,从上到下 3: 从右到左, 从下到上
intX整数型返回识别到的X坐标,没找到返回-1
intY整数型返回识别到的Y坐标,没找到返回-1
变量名类 型静态数组备 注
临时变量_1整数型 
临时变量_2整数型 
临时变量_3整数型 
大图宽度整数型 
大图高度整数型 
小图宽度整数型 
小图高度整数型 
大图字节集 
小图字节集 
图像名称数组文本型0
序号1整数型 
图像位数整数型 
ccx整数型 
m整数型 
判断是否重复文本文本型 
判断是否重复字节集字节集 
如果真 (X1 > X2)
临时变量_1 = X1
临时变量_2 = X2
X1 = 临时变量_2
X2 = 临时变量_1
如果真 (Y1 > Y2)
临时变量_1 = Y1
临时变量_2 = Y2
Y1 = 临时变量_2
Y2 = 临时变量_1
颜色色偏 = 取文本左边 (矫正色彩描述 (颜色色偏), 6)
如果真 (相似度 < 0 相似度 > 100)
相似度 = 95
如果真 (查找方向 < 0 查找方向 > 3)
查找方向 = 0
如果真 (取数组成员数 (图字节集数组) = 0)
信息框 (“图片名参数不能为空”, 0, , )
intX = -1
intY = -1
临时变量_1 = -1
返回 (临时变量_1)
大图 = 窗口截图 (全局窗口句柄, X1, Y1, X2, Y2)
大图宽度 = 取字节集数据 (取字节集中间 (大图, 19, 4), #整数型, )
大图高度 = 取字节集数据 (取字节集中间 (大图, 23, 4), #整数型, )
图像位数 = 取字节集数据 (取字节集中间 (大图, 29, 2), #短整数型, )
如果真 (图像位数 ≠ 24)
信息框 (“当前截图数据为”到文本 (图像位数)“位,”“截图数据必须是24位格式无压缩的BMP图像”, 0, , )
intX = -1
intY = -1
临时变量_1 = -1
返回 (临时变量_1)
判断是否重复文本 = “”
变量循环首 (1, 取数组成员数 (图字节集数组), 1, 序号1)
如果真 (图字节集数组 [序号1]{  })
到循环尾 ()
如果 (寻找字节集 (判断是否重复字节集, 到字节集 (“|”) + 图像名称数组 [序号1], 0) = -1)
判断是否重复字节集 = 判断是否重复文本 + 到字节集 (“|”) + 图像名称数组 [序号1]



小图 = 图像名称数组 [序号1]
如果真 (取字节集左边 (小图, 2){ 66, 77 })
intX = -1
intY = -1
临时变量_1 = -1
到循环尾 ()
小图宽度 = 取字节集数据 (取字节集中间 (小图, 19, 4), #整数型, )
小图高度 = 取字节集数据 (取字节集中间 (小图, 23, 4), #整数型, )
图像位数 = 取字节集数据 (取字节集中间 (小图, 29, 2), #短整数型, )
如果真 (小图宽度 > 大图宽度 小图高度 > 大图高度 图像位数 ≠ 24)
如果真 (图像位数 ≠ 24)
信息框 (“当前小图数据为”到文本 (图像位数)“位,”“小图数据必须是24位格式无压缩的BMP图像”, 0, , )
intX = -1
intY = -1
临时变量_1 = -1
到循环尾 ()
临时变量_1 = 位图找图返单坐标_汇编 (大图, 小图, 0, 0, 大图宽度 - 1, 大图高度 - 1, 颜色色偏, 相似度, 查找方向, intX, intY)
如果真 (临时变量_1 = 0)
intX = intX + X1
intY = intY + Y1
返回 (序号1 - 1)

变量循环尾 ()
返回 (-1)



作者: Wesley咚咚    时间: 2022-6-25 21:14
闻v风 发表于 2022-6-25 19:39
另外。可以自己添加一个子程序,找图片名,改成找图片字节集数组,启动软件时,就把需要找的图先读到字节集 ...

是把图片名转成字节集吗 感觉并不怎么实用啊 还是我不会用啊
作者: 闻v风    时间: 2022-6-25 22:07
是在启动软件时,把所有需要找的图,全读入字节集里面啊。。
不然每次找图都会按图片名,先读图片,再找的。。明白了吧?
作者: Wesley咚咚    时间: 2022-6-25 22:12
闻v风 发表于 2022-6-25 22:07
是在启动软件时,把所有需要找的图,全读入字节集里面啊。。
不然每次找图都会按图片名,先读图片,再找的 ...

懂了,谢谢大佬,感觉很有用,我去试试
作者: Wesley咚咚    时间: 2022-6-25 22:22
闻v风 发表于 2022-6-25 19:39
另外。可以自己添加一个子程序,找图片名,改成找图片字节集数组,启动软件时,就把需要找的图先读到字节集 ...

大佬呀,能把要传的图片字节集参数格式给我吗,给个模板,我刚用图色,把图片转到字节集的命令都找不到
作者: 闻v风    时间: 2022-6-25 23:03


大概写了下。差不多就是这个意思吧。
你自己敲一下代码,论坛有检测,我直接发代码,又得等审核过了, 才能发出回复了。。
这只是个我自己想的思路,你可以扩展下。
比如把图片名,放到配置文件。再用批量读配置的方式,启动的时候,直接自动读所有图片。

作者: Wesley咚咚    时间: 2022-6-26 00:16
闻v风 发表于 2022-6-25 23:03
大概写了下。差不多就是这个意思吧。
你自己敲一下代码,论坛有检测,我直接发代码,又得等审核过了, 才 ...

感谢大佬
作者: gaoyang    时间: 2022-9-21 08:55
这个找图本身有bug,截图里有几行代码屏蔽掉就行了




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4