按键精灵 - 安卓版 - 罗盘 - 八向方位模拟 - 自动寻路

C++ 实现按键精灵(附完整源码) 阅读详情
AI摘要

该博客介绍了两种八向方位模拟的自动寻路算法,通过识别屏幕坐标并进行智能移动来达到目标位置。第一种算法使用SmartOcr识别坐标,并根据目标位置进行左、上、右、下及对角线的触摸操作;第二种算法增加了寻路次数限制和误差容忍度,提高了寻路的精度和效率。两种方法都适用于游戏或模拟操作场景。

Time: 2022年4月20日03:47:57 by: MemoryErHero

源码参考案例 (非最优方案,请自行测试优化,仅供学习参考)

1 . 罗盘 - 八向方位模拟 - 自动寻路 1

参数1: 目标坐标X 整数型

参数2: 目标坐标Y 整数型

参数3: 挪动间隔 整数型

Function 自动寻路_八方位向(mbx,mby,tnumber)
    Dim 识别坐标,坐标,坐标2()
    Dim 次数 = 0
    Dim x坐标 = 190
    Dim y坐标 = 193
    //(要修改,此处坐标为方向摇杆中点)  
    Do
        /*识别坐标 = int(SmartOcr(555,1159,579,1279,"CFDCE6-202020|B5C0C9-121212|8A939A-121212|9DA7AF-121212"))
        //(要修改,此处为坐标数字范围/字体颜色/字体边缘颜色)
        //坐标 = Split(识别坐标, ",")
        //坐标(0) = CLng(坐标(0))
        //坐标(1) = CLng(坐标(1)) 
        */
        坐标(0) = Int(SmartOcr(556, 1175, 581,1220,"CFDCE6-202020|B5C0C9-121212|8A939A-121212|9DA7AF-121212"))
        坐标(1) = int(SmartOcr(556,1175,581,1220,"CFDCE6-202020|B5C0C9-121212|8A939A-121212|9DA7AF-121212"))
        TracePrint 坐标(0),坐标(1)
        If 坐标2(0) = 坐标(0) and 坐标2(1) = 坐标(1) Then 
            次数 = 次数 + 1
        Else 
            次数=0
        End If
        坐标2(0) = 坐标(0)
        坐标2(1) = 坐标(1)
        If Abs(坐标(0) - mbx) <= 2 and Abs(坐标(1) - mby) <= 2 Then  
            Exit Do
        End If
        TouchDown x坐标, y坐标, 1
        If 坐标(0) > mbx and 坐标(1) > mby Then 
            '左上
            TouchMove x坐标 + 150, y坐标 - 150, 1, tnumber
        ElseIf 坐标(0) > mbx and 坐标(1) < mby Then
            '左下
            TouchMove x坐标 - 150, y坐标 - 150, 1, tnumber
        ElseIf 坐标(0) < mbx and 坐标(1) > mby Then
            '右上
            TouchMove x坐标 + 150, y坐标 + 150, 1, tnumber
        ElseIf 坐标(0) < mbx and 坐标(1) < mby Then
            '右下
            TouchMove x坐标 - 150, y坐标 + 150, 1, tnumber
        Else 
            If Abs(坐标(0) - mbx) > Abs(坐标(1) - mby) Then 
                '左右移动
                If 次数 > 2 Then 
                    If 坐标(1) > mby Then 
                        '上
                        TouchMove x坐标 + 150, y坐标, 1, tnumber
                    Else 
                        '下
                        TouchMove x坐标 - 150, y坐标, 1, tnumber
                    End If
                    次数 = 0
                Else 
                    If 坐标(0) > mbx Then 
                        '左
                        TouchMove x坐标, y坐标 - 150, 1, tnumber
                    Else 
                        '右
                        TouchMove x坐标, y坐标 + 150, 1, tnumber
                    End If
                End If
            Else 
                '上下移动
                If 次数 > 2 Then 
                    If 坐标(0) > mbx Then 
                        '左
                        TouchMove x坐标, y坐标 - 150, 1, tnumber
                    Else 
                        '右
                        TouchMove x坐标, y坐标 + 150, 1, tnumber
                    End If
                    次数 = 0
                Else 
                    If 坐标(1) > mby Then 
                        '上
                        TouchMove x坐标 + 150, y坐标, 1, tnumber
                    Else 
                        '下
                        TouchMove x坐标 - 150, y坐标, 1, tnumber
                    End If
                End If
            End If
        End If
        TouchUp 1
    Loop	
End Function


Call 自动寻路_八方位向(285,606,300)

1 . 罗盘 - 八向方位模拟 - 自动寻路 2

参数1: 目标坐标X 整数型

参数2: 目标坐标Y 整数型

参数3: 罗盘移动时间 整数型

参数4: 目的坐标误差值 整数型

参数5: 罗盘移动上限 整数型

返回值: 成功返回 true 上限返回 false 逻辑型

//Time:2022年4月20日04:19:10 By:MemoryErHero
Function moveCompass(data)
    //函数名: 罗盘移动  传参类型: 数组
    //例子: dataArr = {"左下", 188, 192, 118, 261, moveTime}
    //      moveCompass(dataArr)
    TracePrint "罗盘移动:",data(0)
    Swipe data(1), data(2), data(3), data(4), data(5)
End Function

Function 自动寻路_八方位向限次(mbx, mby, moveTime, deviation, jobmax)
	/* 注释 : 精确度误差 +1左右,时间最好控制 500 毫秒以内.
	** 参数1: 目的坐标x 整数型
	** 参数2: 目的坐标y 整数型
	** 参数3: 罗盘移动时间 整数型
	** 参数4: 目的坐标误差值 整数型
	** 参数5: 罗盘移动上限 整数型
	** 返回值: 成功返回 true  上限返回 false 逻辑型
	*/
    Dim MoveArr(9)
    //按键精灵数组从0开始,方便阅读所以选用下表1位起始
    MoveArr[1] = {"左下", 188, 192, 118, 261, moveTime}
    MoveArr[2] = {"左上", 188, 192, 263, 118, moveTime}
    MoveArr[3] = {"右下", 188, 192, 117, 118, moveTime}
    MoveArr[4] = {"右下", 188, 192, 266, 265, moveTime}
	
	
    MoveArr[5] = {"下", 188, 192, 89, 191, moveTime}
    MoveArr[6] = {"上", 188, 192, 296, 191, moveTime}
    MoveArr[7] = {"左", 188, 192, 191, 298, moveTime}
    MoveArr[8] = {"右", 188, 192, 191, 90, moveTime}
		
    Dim nowX,nowY,cx1,xy1,jobNumber
    Do
        nowX = int(SmartOcr(556,1175,581,1220,"CFDCE6-202020|B5C0C9-121212|8A939A-121212|9DA7AF-121212"))
        nowY = int(SmartOcr(557,1224,578,1271, "CFDCE6-202020|B5C0C9-121212|8A939A-121212|9DA7AF-121212"))
        TracePrint "识别坐标: ",nowX,nowY	
        If Abs(mbx - nowX) <= deviation and Abs(mby - nowY) <= deviation   Then
            TracePrint"状态: 到达目的"
            自动寻路_八方位向限次 = true
            Exit Function
        Else
            jobNumber = jobNumber+1
            TracePrint "已执行: "&jobNumber&" 次"
            If jobNumber = jobmax Then 
                自动寻路_八方位向限次 = false
                Exit Function	
            End If
        End If  
        If Abs(mbx - nowX) >= 1 or Abs(mby - nowY) >= 1  Then	
            If (mbx - nowX) > 0 and (mby - nowY) > 0 Then 
                //TracePrint "右下"
                moveCompass(MoveArr[1])	
            ElseIf (mbx - nowX)<0 and (mby - nowY)<0 Then
                //TracePrint "左上"
                moveCompass(MoveArr[2])	
            ElseIf (mbx - nowX)<0 and (mby - nowY)>0 Then
                //TracePrint "右下"
                moveCompass(MoveArr[3])	
            ElseIf (mbx - nowX)>0 and (mby - nowY)<0 Then
                //TracePrint "右上"
                moveCompass(MoveArr[4])
            ElseIf (mbx - nowX)=0 and (mby - nowY)>0 Then
                //TracePrint "下"
                moveCompass(MoveArr[5])
            ElseIf (mbx - nowX)=0 and (mby - nowY)<0 Then
                //TracePrint "上"   
                moveCompass(MoveArr[6])
            ElseIf (mbx - nowX)>0 and (mby - nowY)=0 Then
                //TracePrint "左"
                moveCompass(MoveArr[7])
            ElseIf (mbx - nowX)<0 and (mby - nowY)=0 Then
                //TracePrint "右" 
                moveCompass(MoveArr[8])
            End If
        End If
    Loop   
End Function

Call 自动寻路_八方位向限次(285, 606, 300, 3, 50)

/*
Dim MoveArr(9)
Dim moveTime = 0
MoveArr[1] = {"左下", 188, 192, 118, 261, moveTime}
MoveArr[2] = {"左上", 188, 192, 263, 118, moveTime}
MoveArr[3] = {"右下", 188, 192, 117, 118, moveTime}
MoveArr[4] = {"右下", 188, 192, 266, 265, moveTime}
	
	
MoveArr[5] = {"下", 188, 192, 89, 191, moveTime}
MoveArr[6] = {"上", 188, 192, 296, 191, moveTime}
MoveArr[7] = {"左", 188, 192, 191, 298, moveTime}
MoveArr[8] = {"右", 188, 192, 191, 90, moveTime}

For index = 1 To 8
	TracePrint "序号: "&index
    For Each a In MoveArr[index]
        TracePrint a()
    Next
    TracePrint "-------------------------------"
Next
 
moveCompass (MoveArr[1])
*/
按键精灵打怪学习-窗口绑定技能 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等) 阅读详情

相关推荐

按键精灵手机助手之实战篇(四)项目源码

本篇直接上源码了,下面是源码主要功能包含主线、师门、日常的乐于助人、除暴安良、刷道等

清风的博客 6377

按键精灵大漠插件自动寻路自动打怪代码片段

Call 传送到("兽人古墓") Function 传送到(mapname) //寻路找老兵 自动寻路 265, 272 //点击老兵 Call 等字点击("老兵", "49.67.78-10.20.30", 20, 45, 500) Call 等字点击(mapname, "ffdf00-050505", 24, 6, 500) Call 等字点击("前往挑战", "ffdf00-050505", 24, 6, 500) // Do // 找到了么 = 找字点击("老兵", "49.67.78-

qq_20026293的博客 2万+

Objective-C实现按键精灵(附完整源码)

Objective-C实现按键精灵(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 728

智能C星寻路插件支持按键精灵等多语言调用

懒人、无技术、省时间者适合用COM组件,类似大漠插件、按键精灵插件 追求优化、效率、资源、有技术者 适合静态DLL 价格:1月5元;1年50元; 算法图示讲解: 详细使用案例:(插件的格式都是类似的,不同的只是核心算法) 本算法是A星算法的升级版本,不是一个档次的东西 请看好 地图的图片放在和按键同目录下的BMP文件夹下,24位bmp格式的图片...

weixin_30756499的博客 2721

JavaScript实现按键精灵(附完整源码)

JavaScript实现按键精灵(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1804

深入理解按键精灵的C++实现原理

按键精灵是一个强大的自动化脚本工具,允许用户创建和执行自动化任务,模拟用户的点击、输入等操作。它广泛应用于数据录入、测试脚本的执行、定时任务的处理等场景中。按键精灵通过简单的脚本语言,使得对技术知识掌握不多的用户也能实现复杂的自动化操作。MFC(Microsoft Foundation Classes)是一组C++类库,由微软提供,主要用于简化Windows应用程序的开发。

weixin_42465140的博客 1168

【按键精灵源码】一个稍微复杂点的脚本界面

大家好,我是公众号3分钟学堂的郭立员,继续我们按键精灵安卓版文章教程的讲解,这次带来的是一个群友的问题解答。 他在网上看到别人的脚本界面觉得不错,想要模仿一下,但是发现一些功能不会写,就来问我怎么做,能不能写一篇文章教程。 我说可以,他给我发了一段视频,看了一下不难,先给大家看看效果啊,这里我直接发我做好的动图展示: 在公众号里面写脚本界面的文章有挺多,涉及的命令差不多都讲过了,这期为啥还写呢,主要是觉得这个案例的逻辑还不错。 在看的讲解之前,你不妨想一想这个界面逻辑如果是你的话会不会写。 脚本讲解 (一

microgly的博客 6740

按键精灵采集脚本源码

按键精灵采集脚本源码 ,只供学习使用,按键精灵版本7开发

A*寻路学习,附代码

这几天学习了一下A*寻路,这里记录一下代码,网上有很多详细的教程,代码里注释很详细。这里就不赘述了,直接上代码 首先是格子对象类 /// <summary> /// 格子对象类 /// </summary> public class AstarNode { public int x;//格子坐标信息 X Y public int y; public float f;//格子消耗信息 public float g; public float

Yxwx的博客 758

A*寻路算法 教程(一) (转)

NULL 博文链接:https://xldbk.iteye.com/blog/504452

按键精灵源码

按键精灵源码 易语言源码,可以记录鼠标移动位置键盘按键的共同能

【JavaScript]实现动态拖拽小精灵

系列文章目录 提示:各位友友大家好呀,今天我们使用js实现一个跟随鼠标移动的小的案例吧 文章目录系列文章目录前言一、元素偏移量是什么?二、使用步骤1.想方设法:先获取到坐标2.读入数据总结 前言 提示: 今天学习了一个js的小案例,来和可乐一起学习探讨下吧 skr~ 效果: 提示:以下是本篇文章正文内容,下面案例可供参考 一、元素偏移量是什么? offset :中文就是偏离的意思, 使用 offset系列相关属性可以动态的得到该元素的位置(偏移)、大小等。 案例中使用到的属性:off

cola 4001

按键精灵源代码(含源代码)_按键_发声_检测键盘_按键精灵u_

按键发声,可以检测键盘有没有失效,以重音发声小软件

自己动手开发安卓版按键精灵

第一步. 获取(并记录)点击的位置1.找出我们的安卓设备名称 adb shell getevent -p 查看哪个设备包含event 体系里 宽(0035)和高(0036),那么这个设备就是我们的安卓手机,例如这里的设备名称为/dev/input/event8 计算比例: rateW = 720(手机屏幕的宽) / 719(event里0035的max) ≈ 1 rateH = 12

ithouse的专栏 4万+

按键精灵自动寻路打怪代码[源码]

本文提供了按键精灵与大漠插件结合的自动寻路和自动打怪的代码片段。代码主要包括传送功能、自动寻路功能、等字点击功能和打怪功能。传送功能通过调用老兵NPC实现地图切换;自动寻路功能通过计算小地图坐标比例实现精准移动;等字点击功能通过循环检测屏幕文字实现交互;打怪功能通过识别怪物血条和计算距离实现自动攻击最近怪物。代码逻辑清晰,适用于游戏自动化操作场景。

测试丢包_电信IPRAN承载LTE业务丢包故障处理案例

银川 景旭阳电信IPRAN承载LTE业务丢包故障处理案例一.故障现象某地市IPRAN网络承载LTE基站业务,客户反馈近期丢包严重,基站侧ping侧核心网EPC丢包达到10%左右;且基站数量在10个左右,并分布在同一地区,需要IPRAN网络协助排查;随后查看了IPRAN网络;发现这些业务所在基站的PW-BFD历史告警存在频繁的UP/DOWN告警;综上信息展开故障处理,初步判断由于BFD频繁...

weixin_29740921的博客 1910

【按键精灵源码分享】遍历图片在屏幕上出现的所有坐标脚本源码

大家好,我是公众号3分钟学堂的郭立员,今天继续我们的按键精灵安卓版源码分享,这一期带来的是遍历图片在屏幕上出现的所有坐标脚本源码。 适用范围 同一张图在屏幕上多次出现,比如下面这些图。 图片 图片 代码 '定义截图的大小 Dim x=18 Dim y=20 '获取屏幕大小,如果指定范围,直接填写数值 Dim sx1=0 Dim sy1=0 Dim sx2=GetScreenX() Dim sy2=GetScreenY() '定义存储坐标的数组变量 Dim arr(),n=0 '遍历图片 Dim intx,i

microgly的博客 3862

STM32F401RET6寄存器手册阅读标记

对于时钟树配置,可参考STM32CubeMX中的时钟树配置,STM32CubeMX将基础配置图像化,较为简单。RCC_CR寄存器的HSIRDY位为只读位,当读取值为1时,表示HSI振荡器准备就绪,当HSION位被设置时,HSIRDY会自动设置为低电平。//问题标记:USART配置寄存器信息是如何与USART1/2/3建立联系的(为什么不是三个分别配置)查阅寄存器手册可知,需要配置时钟的模块有:USART1,IO port A。(2)TX配置方法(寄存器手册512页)(4)配置寄存器(寄存器手册548页)

m0_72615170的博客 1468

A星寻路算法学习(附自己写的源码)

相对的细节也需要完善,要准备一个数组存储这些f,当其走过则删除(必然是删除最小的)【假如这个时候最小的路程会遇到墙壁,因为已经删除了,所以会选择另一个最小代价的去】h的计算:无视障碍到终点距离,是会随着移动而改变(离终点越近,这个越小)红色的为出发点,则要到右上角这个点,走的斜线和走右边的直线一画,一个等腰直角三角形就出现了。,万事万物都有代价,而量化评估就是由你来决定这个代价的值(这个值不能离谱,需要合乎实际)。如果这个代价设定是不合理的,得到的结果就会和想要得到的结果背道而驰。g是会随着移动而增加。

多方通行8的博客 1857

基于 STM32 单片机的实验室多参数安全监测系统设计与实现

本系统以 STM32F103C8T6 单片机为核心,集成温湿度监测、烟雾检测、气体泄漏报警、人体移动监测等功能模块,通过 OLED 显示屏实时显示数据,并支持 Wi-Fi 远程传输。系统可对实验室异常环境参数(如高温、烟雾、燃气泄漏)及非法入侵实时报警,保障实验室安全。本文从硬件选型、电路设计到软件实现提供了完整的实验室安全监测系统方案,可根据实际需求调整传感器类型和通信方式,适用于科研、教学等场景的环境安全防护。:可增加继电器模块控制通风设备或切断电源,集成 ZigBee 组网实现多实验室联动监测。

weixin_42300449的博客 1285

论文翻译:2024 High-Confidence Computing A survey on large language model (LLM) security and privacy: The

大型语言模型(LLMs),如ChatGPT和Bard,已经彻底改变了自然语言理解和生成。它们具有深度语言理解能力、类似人类的文本生成能力、上下文意识和强大的问题解决技能,使它们在各个领域(例如搜索引擎、客户支持、翻译)中变得不可或缺。同时,LLMs也在安全领域获得了关注,揭示了安全漏洞并展示了它们在安全相关任务中的潜力。本文探讨了LLMs与安全性和隐私的交集。具体来说,我们研究了LLMs如何积极影响安全性和隐私,与它们使用相关的潜在风险和威胁,以及LLMs内部的固有漏洞。

CSPhD-winston的博客 1722

Checkra1n 越狱常见问题大全

0、 Mac 安装 checkra1n 参考资料 https://www.feng.com/post/12820382 1、checkra1n jailbreak 越狱最新版本下载 checkra1n 0.9.6 beta 下载苹果版本软件 Download for macOS checkra1n官方网站: https://checkra.in/ 2、 越狱机型范围 A11芯片和以下,即iPhone XS、iPad Pro第三代、iPad mini 5以上设备不支持 3、checkra1n 支持 wind

MemoryEr 3万+

R语言使用mlr包创建回归任务、指定回归学习函数为KNN回归模型、网格搜索、交叉验证调节KNN模型的超参数K获取模型最佳的K值、可视化KNN模型的不同K值和MSE指标之间关系图

R语言使用mlr包创建回归任务、指定回归学习函数为KNN回归模型、网格搜索、交叉验证调节KNN模型的超参数K获取模型最佳的K值、可视化KNN模型的不同K值和MSE指标之间关系图

statistics+insight+vista+power 279
上一篇: 懒人精灵 一 获取淘宝北京时间接口
下一篇: 雷神/雷电模拟器 之已开启,但不显示指针位置与显示点按操作反馈处理方案
MemroyErHero
博客等级 码龄9年 2337粉丝 68原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MemroyErHero

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值