分数霸榜! python助你微信跳一跳拿高分
前言
最近微信的跳一跳很火,大家看到排行榜上几百上千的分数,再看看自己百分左右的分数肯定很难过,我手残怪我吗?没关系,如果你跟着我来,也能让你分数霸榜。
原理
首先大家是有一个直观感受,根据两个箱子距离的不同,需要按压的时间也是不一样的,一般来说,一个大胆的猜测是按压时间和距离是成正比的。
这是我们的工作原理:
- 在跳一跳页面截图
- 计算出初始点和终点的距离
- 想办法测出距离与按压时间的系数
- 想办法让手机按压指定的时间
- 重复1-4
工具
- adb调试工具,它可以辅助截图以及上传截图给电脑,以及控制手机按压位置及时间
- python处理数据
- pythonPillow库一个图像库,可以获取图像信息
- pythonmatplotlib库配合Pillow打开图像并记录鼠标点击地方的坐标
准备工作
环境
fedora27
python3.6
安装
adb调试工具
fedora/centos
sudoyuminstalladb
ubuntu
sudoaptinstalladb
python需要的库
sudopip3installmatplotlib sudopip3installPillow
还需要sudoyuminstallpython3-tkinter(fedora)
sudoaptinstallpytho3-tk(ubuntu)
安装这个是为了支持matplotlib
开始行动
- 手机连接电脑,打开usb调试,弹框是否允许计算及对手机控制选择是
- 终端运行adbdevices如果出现590bc***device类似的说明连接好了,否则重试第一步
- 打开微信跳一跳,点击开始游戏,运行脚本
- 在图片上依次点击棋子脚下和目的方框的中心
- 手机开始跳了
- 重复4
我的SM-C7000(1920x1080),我测出来系数是1.38。如果手机分辨率比我低,增大这个值,否则减小这个值,多次修改这个值直到适合你的手机。
代码
#coding=utf-8
fromPILimportImage
importpylab
importos
importtime
importrandom
cut='adbshellscreencap-p/sdcard/autojump.png'
push='adbpull/sdcard/autojump.png.'
jump='adbshellinputswipe{x}{y}{x}{y}{time}'
whileTrue:
#手机截屏
os.system(cut)
time.sleep(0.01)
#截图上传
os.system(push)
time.sleep(0.03)
pic=Image.open('autojump.png')
#获取屏幕像素
(w,h)=pic.size
#手指点击位置一般在中间偏下。取随机值混淆系统检测
w=int(w*random.uniform(0.45,0.55))
h=int(h*random.uniform(0.7,0.8))
#打开图片
im=pylab.array(pic)
pylab.imshow(im)
#读取两个点
(x1,x2)=pylab.ginput(2)
#两点距离公式
s=((x1[0]-x2[0])**2+(x1[1]-x2[1])**2)**0.5
#print(s)1.382.05
#分辨率与按压时间(ms)的系数
ratio=1.38
#随机更改按压时间使他不是一个整百数
s=s*ratio+random.randint(-20,20)
s=int(s)
#pylab.close()
#像手机发送跳远按压时间
os.system(jump.format(x=w,y=h,time=s))
time.sleep((s+500)/1000)
一些建议
最好停止跳之前手动跳几步,防止被tx发现。
分数不要太高,循序渐进逐渐升高,否则容易被清空分数。
更多内容大家可以参考专题《微信跳一跳》进行学习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。