首页 凑个热闹,微信跳一跳辅助

凑个热闹,微信跳一跳辅助

前言

我知道这个游戏还是朋友圈发的,但是当时我并不知道,这个游戏在哪,叫什么,后来去年30号,群里菜鸟童鞋,突然发了一个截图跳一跳辅助,我那时才知道这是微信最新版才有的,所以立马更新微信开始玩了,因为跳的速度都很快,所以经过很多次才勉强拿了一个174分自己的最高分了,然而,因为昨天有童鞋发了辅助,自己手痒就也开始想写一个了,所以网上找命令,就写了,写完之后就知道是一个浪费时间的游戏。但是一直没放出来。


准备工作

  1. 手机含最新版微信一个
  2. 网线一根
  3. 手机开启了USB调试,不会开启的请百度谷歌,像我是小米的MIUI9 点击 设置 -> 我的设备 -> 全部参数 -> 连续点击MIUI版本那一行好几下直到提醒开启了开发者模式 -> 设置 -> 更多设置 -> 开发者选项 -> USB调试打开 插上网线即可
  4. 好像也是可以直接wifi链接的无需网线..


预览一波

Image1.gif


原理

是通过adb来实现控制的app,该软件可以执行很多命令,例如截屏,录制视频,关机,安装/卸载apk,回到Home(相当于Home键),点击屏幕指定位置,从某个位置滑动到某个位置(该辅助就是利用这一功能以及截屏实现的)

用到的命令是

  • 截屏并保存到手机 adb shell screencap /sdcard/screen.png 最后一个参数是保存的位置
  • 把截图获取到电脑 adb pull /sdcard/screen.png screen.png 倒数第二个参数是手机中保存的位置 最后一个是电脑保存的位置,只有一个文件名说明和运行程序同一目录
  • 滑动即按住多少毫秒不放 adb shell input touchscreen swipe 10 20 30 40 1000 最后五个参数是 开始位置[x,y] 移动到 目标位置 [x,y] 最后耗时多少毫秒

我这是通过点击目标方块来进行计算距离,从而得到时间跳步,那么原位置则是代码计算的,图里就可以看到这个颜色很特别所以定位所在的颜色即可得到,代码如下

private Point GetNowPoint(Bitmap bitmap)
{
    //Circle
    //+-------+-------+-------+
    //|   R   |   G   |   B   |
    //+-------+-------+-------+
    //| 50-57 | 50-55 | 84-95 |
    //+-------+-------+-------+

    var width = bitmap.Width;
    var height = bitmap.Height;

    for (int rowIndex = 0; rowIndex < width; rowIndex++)
    {
        for (int celIndex = 0; celIndex < height; celIndex++)
        {
            var color = bitmap.GetPixel(rowIndex, celIndex);
            if (color.R >= 50 && color.R <= 57 && color.G >= 50 && color.G <= 57 && color.B >= 84 && color.B <= 95)
            {
                return new Point(rowIndex, celIndex);
            }
        }
    }
    throw new Exception("Can't find now point");
}

因为是遍历像素得到的位置,遇见第一个像素符合就返回了,所以可能得到的是头部,虽然范围值尽可能的在底部了,但是和实际底部的位置有所偏差的,所以之前拿来跑了200多分就挂了,也没进一步修改没玩了,觉得这是浪费时间的游戏,而且只是半自动的跳步并非全自动。

计算时间是利用三角形定理 a^2 + b ^2 = c^2 然后时间是距离的1.47倍 幸好小学数学没忘...

var w = nextPoint.X - nowPoint.X;
var h = nextPoint.Y - nowPoint.Y;
var len = Math.Sqrt(w * w + h * h);
interval = (int)(len * 1.47);//时间是距离的1.47倍


全自动的思路

可以进一步优化的,比如识别目标位置,一开始我有一个思路是先边缘检测得到某图然后识别位置,然后识别目标的正方形的中心,但是功底有限尝试过未能完成。

但是也有一个新的思路,是从步骤数下开始计算不和背景色(这里的背景像素不是固定的也是一个范围)相同的像素点就是目标方块的起始位置,然后对这个位置两侧下方识别,得到几个点,计算中心点,从而得到目标位置,即可实现自动跳步。。。以后有兴趣再完善。。。


源码:https://git.kerwin.cn/Shares/Jump

除另有声明外,本文章凑个热闹,微信跳一跳辅助采用 知识共享(Creative Commons) 署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 进行许可。

评论
目录