周六晚上看了强子老师讲的用python来玩微信跳一跳,感觉很有意思,所有自己动手试了一下,与大家分享一下。
完整的程序源码包。链接: https://pan.baidu.com/s/1c1TAJja 密码: t89d
一:准备工具
-
adb 驱动 下载链接:http://adbshell.com/upload/adb.zip
-
安卓手机
-
打开手机调试模式
-
usb线接好手机和电脑
PyCharm:专门用于Python开发的IDE工具
实现原理
- 获取手机的实时的截图
- 点击起始位置和落地位置
- 计算两个点的距离
- 计算按压时间
- 发送按压指令
- 重新刷新手机截图
GUI 布局
创建窗口 -> 添加控件 -> 显示窗口
- 代码可读性好
- 耦合度低 面向对象 类
=================================================================================================================
二、关于python、模块的安装,和代码。
1.在电脑上安装python(我用的是win10和phthon3.6版本)
安装步骤和借鉴:
电脑如何下载最新版Python并安装(当前3.6.3):https://jingyan.baidu.com/article/fec7a1e5ceb3121191b4e762.html
2.安装此次程序所用到的模块(根据自己安装的Windows版本和python版本进行下载)。
numpy-1.14.0rc1-cp36-none-win_amd64.whl
Pillow-5.0.0-cp36-cp36m-win_amd64.whl
matplotlib-2.1.1-cp36-cp36m-win_amd64.whl
下载链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/
使用cmd进入下载好的文件的目录,安装指令:(opencv是最后安装的),最好按照下面顺序安装:
pip3.6 install C:\python36\Scripts\numpy-1.14.0rc1-cp36-none-win_amd64.whl
pip3.6 install C:\python36\Scripts\Pillow-5.0.0-cp36-cp36m-win_amd64.whl
pip3.6 install C:\python36\Scripts\matplotlib-2.1.1-cp36-cp36m-win_amd64.whl
3.下面是用到的代码,可以复制下来,保存为main.py。
# !/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'wechat' import os import PIL,numpy import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation import time need_update = True def get_screen_image(): os.system('adb shell screencap -p /sdcard/screen.png')#获取当前界面的手机截图 os.system('adb pull /sdcard/screen.png')#下载当前这个截图到当前电脑当前文件夹下 return numpy.array(PIL.Image.open('screen.png')) def jump_to_next(point1, point2):#计算炫的长度 x1, y1 = point1; x2, y2 = point2 distance = ((x2-x1)**2 + (y2-y1)**2)**0.5 os.system('adb shell input swipe 320 410 320 410 {}'.format(int(distance*1.35))) def on_calck(event, coor=[]):#绑定的鼠标单击事件 global need_update coor.append((event.xdata, event.ydata)) if len(coor) == 2: jump_to_next(coor.pop(), coor.pop()) need_update = True def update_screen(frame):#更新图片 /从画图片 global need_update if need_update: time.sleep(1) axes_image.set_array(get_screen_image()) need_update = False return axes_image, figure = plt.figure()#创建一个空白的图片对象/创建一张图片 axes_image = plt.imshow(get_screen_image(), animated=True)#把获取的图片话在坐标轴上面 figure.canvas.mpl_connect('button_press_event', on_calck) ani = FuncAnimation(figure, update_screen, interval=50, blit=True) plt.show()
4.将下载好的adb驱动,和编写好的jump.py代码,放到同一个问价夹jump_demo中,方便调用。
然后在jump_demo这个文件夹中直接打开powershell(在文件中shift+鼠标右键,选择在此处打开power shell窗口)了,
或者在cmd里面,找到相对应的文件夹,然后,运行C:\Users\dell\Desktop\jump_demo> python main.py
最后建议大家不要把分数刷的太高,容易被拉黑。\捂脸笑。