使用Python制作微信跳一跳半自动外挂+详细注释

原创 2018年04月16日 13:28:14

思路

1.截取安卓手机当前屏幕图片并复制到Mac。 知识点:ADB工具--截屏命令

2.测量截图中两方块之间的距离。知识点:Matplotlib制图工具

3.根据距离判断手机所需按下的时间。

4.通过鼠标控制Android触摸屏,完成跳跃。知识点:ADB工具--滑屏命令

5.跳跃完成后,载入下一张手机截图,重复1~4步骤。

知识点:

1. ADB Android Bridge

安装方法:https://www.jianshu.com/p/1b3fb1f27b67 。安装页面下方的命令行工具即可。

截屏命令:https://blog.csdn.net/u012283902/article/details/79186354

模拟按键与输入:https://www.cnblogs.com/lybolg/p/7308745.html

2. Matplotlib制图工具:

numpy初级教学视频

Matplotlib初级教学视频

通过PIL Numpy制作Matplotlib图

Matplotlib鼠标事件

思路实现:

1.截取安卓手机当前屏幕图片并复制到电脑。

    #通过ADB命令截图
    os.system('adb shell screencap -p /sdcard/screen.png')
    #通过ADB命令复制图片到本地
    os.system('adb pull /sdcard/screen.png /Users/songfei/Downloads')
    #通过PIL.Image ,并通过numpy把数据存储到矩阵中。
    p = PIL.Image.open('/Users/XXXXXX/Downloads/screen.png')
    n = numpay.array(p)   

2.测量截图中两方块之间的距离。

1)Matplotlib中,用鼠标点击一下图片,就是一个鼠标事件event。这个event记录了此时鼠标的操作类型(单击)、位置等信息。其中event.x 就是x坐标,event.y 就是y坐标。

2)连续传入2个(x,y)到函数onclick()中,就可以在onclick中计算两坐标之间的距离。

3)传入方式:fig.canvas.mpl_connect('button_press_event',onclick)
即,把'buttom_press_event'这个鼠标按下事件event作为参数传入onclick()函数。这里的onclick后面没有括号。

def onclick(event):
    print('点击坐标:(%d,%d)'%(event.x, event.y))    #通过勾股定理计算距离cid = fig.canvas.mpl_connect('button_press_event', onclick)

3.根据距离判断手机所需按下的时间

距离越长,所需蓄力时间越大。经多次测算,距离乘以6.5相对准确。

press_time = int(l*6.5)#时间单位是毫秒,所以不能再有小数点了,int取整。

4.通过鼠标控制Android触摸屏,完成跳跃动作。

似乎adb中只有swipe滑动命令有时间参数,可以用来模拟触摸时间。5个参数,前4个是x1,y1 x2,y2,最后一个是时间参数,单位是毫秒ms。

def press_screen(l):
    press_time = int(l*6.5)
    cmd = 'adb shell input swipe %s %s %s %s %s' % (x1,y1,x2,y2,press_time)
    os.system(cmd)

5.跳跃完成后,载入下一张手机截图。

这里其实可以通过matplotlib中的animation功能实现载入下一张图片,不过这里用了笨办法,重新载入一张新图片。详见完整代码。

完整代码:

from PIL import Image as im
import numpy as np
import matplotlib.pyplot as plt
import os
import time

#定于坐标列表
coor = []
x1=0
x2=0
y1=0
y2=0
n=None
def get_screen_image():
    global n #此函数不返回值,更新全局变量n。其实完全没有必要,当时不知道为什么这么写了。
    os.system('adb shell screencap -p /sdcard/screen.png')# 手机截图
    os.system('adb pull /sdcard/screen.png /Users/songfei/Downloads')#图片复制到本地    p = im.open('/Users/songfei/Downloads/screen.png') #用PIL.Image读图
    n = np.array(p) #图片转换为数组n,用于matplotlib绘图。

def onclick(event):
    global coor
    print('点击坐标:(%d,%d)'%(event.x, event.y))    #列表coor的元素少于2个时,录入坐标
    if len(coor)<2: 
        coor.append((event.x, event.y))    #列表中有两个坐标元素时:
    if len(coor)==2: 
        l = distance(coor) #第二步,计算两个坐标间的距离
        print ('两点间距离:',l)
        press_screen(l) #第三、四步,根据距离,在屏幕上滑动相应时间,完成跳跃。
        coor = [] #清空列表coor中的坐标元素。
        refresn_screen_image() #第五步,调用refresh_screen_image(),重新载入图片,在refresh函数中又会重新调用本条函数。开始重复二三四五步骤。

def distance(coor):
    global x1,x2,y1,y2 
    x1 = coor[0][0]
    y1 = coor[0][1]
    x2 = coor[1][0]
    y2 = coor[1][1]
    l = (abs((x2-x1)**2 + (y2-y1)**2))**0.5
    return l

def press_screen(l):
    press_time = int(l*6.5)
    cmd = 'adb shell input swipe %s %s %s %s %s' % (x1,y1,x2,y2,press_time)
    print ('蓄力时间:%sms'%press_time)
    os.system(cmd)

def refresn_screen_image():        time.sleep(1)#等待1秒,以便完成跳跃动画。
        plt.close()#关闭前一张图片
        get_screen_image()#调用函数,手机截图
        fig = plt.figure()#重新画图
        image = plt.imshow(n,animated=True)
        cid = fig.canvas.mpl_connect('button_press_event', onclick) #记录鼠标动作,回到onclick函数,重复二三四五步骤。
        plt.show()
#第一步,载入图片并画图
get_screen_image()
fig = plt.figure()
plt.imshow(n,animated=True)
cid = fig.canvas.mpl_connect('button_press_event', onclick)
plt.show()

python进阶之微信跳一跳外挂

开发日志:开发流程:开始运行--&amp;gt;配置手机和电脑(连接,截屏等功能)--&amp;gt;截图--&amp;gt;分析棋子棋盘的坐标--&amp;gt;计算棋子棋盘的距离--&amp;gt...
  • m0_37338590
  • m0_37338590
  • 2018-01-23 10:39:06
  • 693

用Python写一个微信跳一跳物理外挂(安卓手机版)

网上好像有很多关于微信跳一跳的外挂,昨天看到有人在教用Python写的就学了一下 原理:1、通过adb命令截取手机截图, 2、在截图上计算两点之间的距离, 3、算出按压时间一个像素点的按压时间是...
  • sinat_37921768
  • sinat_37921768
  • 2018-01-06 19:26:10
  • 1510

简单的微信跳一跳游戏,半自动辅助 有意思

# !/usr/bin/env python # -*- coding:utf-8 -*- __author__ = '吓彬' ''' 这是一个半自动的物理辅助脚本 针对微信跳一跳游戏 可以用来称霸你...
  • kina2001
  • kina2001
  • 2018-01-17 00:56:23
  • 118

python实现微信跳一跳辅助工具

说明 1.windows上安装安卓模拟器,安卓版本5.1以上 2.模拟器里下载安装最新的微信6.6.1 3.最好使用python2.7,python3的pyhook包有bug,解决比较麻烦 步...
  • qf0129
  • qf0129
  • 2018-01-02 14:52:01
  • 17863

微信“跳一跳”外挂制作历程

微信“跳一跳”外挂制作历程 最近微信出了个“跳一跳”小游戏还挺火的,但是我这种手残人士,小手一滑,棋子就不知道飞哪儿去了。那我气啊,排行榜得拉到底才能看到我的名字,手残肯定不是一两天能解决的,那就写个...
  • shayuchaor
  • shayuchaor
  • 2018-01-02 16:50:59
  • 7155

python30行代码实现跳一跳辅助

跳一跳是一个最近出的一个比较热然后估计马上就要凉了的微信小游戏,一出来就有各路大神直接实现了各种挂。今天逛了逛b站,没想到发现了一个超简单的版本,虽然还是要手动操作,但胜在代码简单,菜鸡花上10多分钟...
  • cool_flag
  • cool_flag
  • 2018-01-08 00:54:14
  • 618

Python 实现微信跳一跳辅助工具(亲自测试有效)

利用python 实现微信跳一跳辅助,代码如下:安装 相关工具包(import),还有adb安装过程,见链接:http://mp.blog.csdn.net/postedit/79338552安装好了...
  • u012611644
  • u012611644
  • 2018-02-20 01:31:45
  • 141

微信跳一跳辅助程序-Python实现

  • 2018年01月03日 22:09
  • 28.73MB
  • 下载

微信“跳一跳”辅助教程python实现

本文转载自: http://blog.csdn.net/LittleBeautiful/article/details/78955792 作者: LittleBeautiful ...
  • nini_coded
  • nini_coded
  • 2018-02-04 01:59:49
  • 973

微信跳一跳外挂学习与自己写的代码和一些思路

其中模仿学习了 2017年最后一篇文章:微信小程序游戏"跳一跳"刷榜原理解析! http://blog.csdn.net/F0ED9cZN4Ly992G/article/details/78937...
  • LLBKWORLD
  • LLBKWORLD
  • 2018-01-06 21:44:20
  • 3203
收藏助手
不良信息举报
您举报文章:使用Python制作微信跳一跳半自动外挂+详细注释
举报原因:
原因补充:

(最多只允许输入30个字)