美文网首页
劳逸结合:python 带你刷分微信跳一跳

劳逸结合:python 带你刷分微信跳一跳

作者: siriusing | 来源:发表于2018-02-02 15:20 被阅读86次

    wechat-jump

    偶然看了简书上大牛的文章,就实现了一下,当然,由于大牛很多地方写得太高深,就自己重写了主要的逻辑和关键的几个步骤。

    image.png

    简介

    微信跳一跳小脚本,没有测过上限,但是基本玩太嗨是要没朋友的。
    比较悲剧的是过700 基本就会被抓作弊,暂时没想到比较好的优化。
    心情复杂,。

    这里又尝试了逐步提高成绩,可是这距离我上三千分实在有点遥远。


    image.png

    环境

    • python2.7和相关py的依赖,
    • 安卓adb驱动
    • 自行下载并配置环境

    配置说明

    • path:   adb对手机截图后回传到计算机的文件名,默认就好
    • screenshot_backup_dir:   debug 截图文件的目录
    • swipe:  手指按压点:最好按照真实习惯设置
    • gameMaxCount:  最大游戏次数
    • press_lambda:  压力系数,建议不要改,改了可能会跳的太远,这个主要是乘以距离用的
    • maxStep:  最大步数,限制一下一次游戏最大的步数,后面还会进行高斯分布,这只是个大概值
    • maxScore:  最大分数,限制游戏最大分数,防止分数太高被认为作弊,同样是个大概值,会进行高斯分布
    • sigma:  正态分布的参数,决定了最大步数和最大分数的发散程度,越大越发散

    实现思路

    主流程

    • 用adb 获取屏幕截图
    • 分析图片,获取棋子位置和目标块的位置,获取当前分数(非必需)
    • 计算棋子和目标块的距离,据此算出按压时间(这个可以多次调试出来)
    • 用adb发送按压命令

    adb参考命令

    • 扫描并推送到计算机指定目录
    adb shell screencap /sdcard/screen.png
    abd pull /sdcard/screen.png
    
    
    • 模拟点击
    adb shell input tap 540 1584
    
    
    • 模拟按压(x1,y1,x2,y2,time)
    adb shell input swipe 500 1500 572 1600 800
    
    

    分析图片

    得到棋子的位置

    从1/3高度开始分析,这边要先用ps采集一下棋子的颜色,然后分析是对比颜色找到棋子的位置


    image.png

    大概在中间1/3的位置扫描就好了

    取色的话,大概取下面的
    把所有和这个颜色相似的点都取到,取均值得到下面的中点,然后向上平移一点,得到棋子的中心

    image.png

    得到目标块的位置

    • 从1/3高度开始逐个像素分析,得到第一个和背景不一样的点,就是目标块的上顶点
      然后沿着竖直方向找到下面的顶点,就可以得到中心


      image.png

    图像中数字识别

    • 分数识别:先截取一下图片,分析发现每个数字一样大小。分析图片建议用FW或PS


      image.png
    • 保存一套0-9的样本,这边我是先写个脚本截图,然后转为黑白图存到本地,也就是我项目中map文件夹里的文件。这边做黑白图处理要注意噪点问题。
    • 得到map文件后,每次需要对比,就先加载一下图片,转为向量。然后把要比较的图片也转为向量,计算向量的距离。因为是高度一致的,所以距离为0的就是那个数字。

    • 在我的代码中,图像中分数的识别主要在imgSeek.py中实现

    感谢

    参考了大牛(神奇的战士)的文章:https://zhuanlan.zhihu.com/p/32452473

    程序相关

    本人联系邮箱:siriusing.cc@qq.com
    github:https://github.com/siriusprofessor/jump

    想法

    没有深奥的技术,简单的代码就可以实现。事实上这里不需要什么机器学习啥啥的,画个图算一下坐标就好了。
    当然,图像中数字识别,一开始真的打算训练个k-mean来做,或者逻辑回归的人工神经网络,不过想想就觉得没必要,把图像转为向量,那就是两个向量的距离问题,而且是绝对一致的k类。所以分析问题很重要。

    相关文章

      网友评论

          本文标题:劳逸结合:python 带你刷分微信跳一跳

          本文链接:https://www.haomeiwen.com/subject/jwcezxtx.html