微信跳一跳

提前声明,这个程序不仅运行缓慢,刷不到高分,还会被系统检测到是外挂。所以要刷分的请不要再看了。

提前声明,这个程序不仅运行缓慢,刷不到高分,还会被系统检测到是外挂。所以要刷分的请不要再看了。

提前声明,这个程序不仅运行缓慢,刷不到高分,还会被系统检测到是外挂。所以要刷分的请不要再看了。

主要是享受解决问题的过程。

无意中在网上看到了一个大神的博客www.pengzhihui.xyz/,看到了微信跳一跳一键开挂,就非常手痒,于是按照大神的方法,自己也写了一个程序。主要思路就是

1、电脑端发送ADB指令到手机截图,然后再把截图上传到电脑;

2、电脑用opencv进行图像处理计算距离;具体方法和大神博客讲的一样,利用opencv自带的模板匹配定位棋子;对于落点位置,先对原图进行边缘检测,然后逐行扫描寻找边缘检测图像的的第一个白点;然后计算两个坐标距离;

3、电脑发送ADB指令模拟触屏;很明显这个触屏时长和距离成正比,需要设定一个系数;

所需资源;1、opencv 2、ADB;这些需要配置好。

       但在具体开发的时候很曲折,开始我用的Qt, Qt的QProcess执行外部程序,发送指令很好用,解决好发送指令问题之后进行图像处理的时候遇到了一些问题;opencv官网下载缓慢,并且只有64位MSVC编译好的库,对于MinGW和MSVC 32位需要自己编译,然后我折腾了两天也没配置好opencv环境。最后在网上找到了一个编译好的32位MSVC库,用VS 2019试了一下可以使用,可能是Qt没配置好编译器,不能使用这个opencv。而在VS中我也不熟悉怎么执行ADB指令。

       于是最后就采取了一个非常麻烦的方案,用opencv单独写了一个图像处理的程序,设定好图像路径,计算出距离后把这个值写入一个文件。主程序还是用Qt开发,并且Qt写界面也很舒服,用Qt发送指令进行截图上传,然后发送指令执行图像处理的exe程序,然后从指定路径读取文件拿到这个距离值,乘以系数,再发送触摸指令,完成一次跳跃。并且还在界面上显示了图像处理后的图像,标注了棋子和落点的位置。如下图所示:截图和跳跃是单步执行,为了调试方便;开始是连续运行模式。另外,为了截图,所以在手机的内部存储路径下建立了一个名字为0的文件夹,保存截图,图片名字为screenshot.png.

        最后,为了发送ADB指令需要手机打开“开发人员选项”->"USB调试",(打开有风险,刷分需谨慎)。

微信跳一跳