微信小程序一时间火爆朋友圈,关键是还有排行榜!游戏操作简单,可直接根据电脑识别,用python写出自动跳辅助脚本,本想动手写下,索性网上有大神写了现成脚本,修改了一小部分参数,就可以稳定使用了霸榜没有任何压力,大致看了一下,用到了numpy os pillow等模块和adb工具,原理其实很简单,大致就是用adb工具连接手机并截图上传到电脑,用pillow测算两点间的距离,并用adb根据距离来确定按压起跳的时间来达到完美的起跳距离,这边分享使用该脚本,下载可以点击这里,具体作者也有大致的使用方法介绍
脚本文件详解
一、需要配置的环境
1.python环境(用python运行脚本)
根据自己的电脑系统,可在这里下载
最好选择高版本的,如3.4以上的版本,然后配置环境
在cmd下运行python,如下表示安装python环境成功
python3.6
2.pip包
可直接用命令python easy_install pip安装pip包,或者百度下载手动放置在python文件下,不过多赘述
3.安装python模块numpy pillow等
可直接在脚本目录下打开cmd,用pip包安装模块
pip install -r requirements.txt
以下为requirements.txt,里面模块版本可根据python版本进行手动更改并安装
backports.functools-lru-cache==1.4
cycler==0.10.0
matplotlib==2.1.1
numpy==1.13.3
olefile==0.44
opencv-python==3.4.0.12
Pillow==4.3.0
pyparsing==2.2.0
python-dateutil==2.6.1
pytz==2017.3
six==1.11.0
4.adb工具配置
切换至项目的 /Tools/adb 目录,双击adb.exe并可运行,然后加入至系统环境,与python环境配置类似
5、安卓模拟器(为了方便我直接下了个安卓模拟器,当然你也可以用真实手机连接电脑)推荐雷电模拟器,自行百度下载
并下载微信打开跳一跳游戏,将模拟器分辨率调至1080p
二、运行操作
1.模拟器中打开游戏,cmd中cd到项目目录,用python运行脚本
python wechat_jump_py3.py
脚本设定了一定的等待时间和尝试机会,以防被系统查水表,启动脚本后,可以不用动手了,达到一定分数 ctrl+c停止即可,切勿刷太高哦!
主程序代码如下:
# -*- coding: utf-8 -*-
import os
import time
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from PIL import Image
def pull_screenshot():
os.system('adb shell screencap -p /sdcard/autojump.png')
os.system('adb pull /sdcard/autojump.png .')
def jump(distance):
press_time = distance * 1.35
press_time = int(press_time)
cmd = 'adb shell input swipe 320 410 320 410 ' + str(press_time)
print(cmd)
os.system(cmd)
fig = plt.figure()
pull_screenshot()
img = np.array(Image.open('autojump.png'))
im = plt.imshow(img, animated=True)
update = True
click_count = 0
cor = []
def update_data():
return np.array(Image.open('autojump.png'))
def updatefig(*args):
global update
if update:
time.sleep(1.5)
pull_screenshot()
im.set_array(update_data())
update = False
return im,
def on_click(event):
global update
global ix, iy
global click_count
global cor
ix, iy = event.xdata, event.ydata
coords = [(ix, iy)]
print('now = ', coords)
cor.append(coords)
click_count += 1
if click_count > 1:
click_count = 0
cor1 = cor.pop()
cor2 = cor.pop()
distance = (cor1[0][0] - cor2[0][0])**2 + (cor1[0][1] - cor2[0][1])**2
distance = distance ** 0.5
print('distance = ', distance)
jump(distance)
update = True
fig.canvas.mpl_connect('button_press_event', on_click)
ani = animation.FuncAnimation(fig, updatefig, interval=50, blit=True)
plt.show()
脚本简单,却让我遇上了安卓神器adb,很不错的小工具耶~,写此文做个纪念,深入研究adb,日后可派上大用场!