周六晚上看了強子老師講的用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
最后建議大家不要把分數刷的太高,容易被拉黑。\捂臉笑。