python微信跳一跳游戲輔助代碼解析
這個代碼實現(xiàn)的是 手動點擊起點 和 終點 ,程序自動判斷距離、觸屏時間 完成跳躍
原理(摘自項目說明頁面):
1. 將手機點擊到“跳一跳”小程序界面;
2. 用Adb 工具獲取當前手機截圖,并用adb將截圖pull上來:
adb shell screencap -p /sdcard/1.png
adb pull /sdcard/1.png .
3. 用matplot顯示截圖;
4. 用鼠標點擊起始點和目標位置,計算像素距離;
5. 根據(jù)像素距離,計算按壓時間;
6. 用Adb工具點擊屏幕蓄力一跳:
adb shell input swipe x y x y time
環(huán)境準備(window7):
1. 下載 、安裝 python3
2. pip安裝
cmd窗口中 進入python3根目錄下的script文件夾,
執(zhí)行命令

則Scripts文件夾下會出現(xiàn)一系列和pip有關的文件,其中有pip.exe
將pip.exe的路徑也添加到環(huán)境變量PATH中
在cmd下輸入“pip”,如果能識別"pip"指令,則說明pip安裝成功了
3. adb驅(qū)動安裝
adb驅(qū)動下載地址:https://adb.clockworkmod.com/
下載完后 將adb 命令 添加到系統(tǒng)環(huán)境變量里面
打開CMD控制臺,輸入adb,出現(xiàn)如下界面,即為配置成功。如圖:

4.下載源碼
到這一步,我們要將源碼下載到本地電腦里。
github地址:https://github.com/wangshub/wechat_jump_game
5.安裝依賴包
跳一跳微信輔助的最終運行需要很多的Python模塊,作者已經(jīng)將這些所需要的模塊都寫在了源碼中的requirements.txt中,
所以我們執(zhí)行命令 pip install -r requirements.txt,即可將這些必須的模塊下載下來,模塊包括有matplotlib,numpy等。
如圖,我們使用CD命令,切換到源碼的下載目錄,
再執(zhí)行命令pip install -r requirements.txt
6.設置手機權限
將安卓手機用USB與電腦相連接,在安卓手機上打開開發(fā)者模式,并開啟USB調(diào)試模式,每種安卓手機開啟的方法都不一樣,以小米 Mix2 手機為例,在設置中找到手機版本號,連續(xù)點擊5次即可開啟開發(fā)者模式然后進入開發(fā)者選項打開 usb調(diào)試、usb調(diào)試(安全設置)、
如果以上操作沒有任何錯誤,那么在CMD控制臺,執(zhí)行命令 adb devices可顯示當前手機連接的端口號。
7.運行
在以上步驟都沒有任何錯誤的情況下,打開微信,開啟跳一跳小游戲,進入游戲主頁面,然后再打開CMD控制臺,使用CD命令切換目錄,切換到跳一跳輔助的源碼目錄下,執(zhí)行命令wechat_jump_auto.py。
參數(shù)調(diào)節(jié)請打開源碼目錄下的config文件夾,里面有適配各種屏幕和機型的文件夾,根據(jù)自己的分辨率或機型,點擊進入相應文件夾,打開里面的config.json文件,修改參數(shù)即可。建議修改前最好備份一份。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from PIL import Image
import math
import time
import os
def pull_screenshot(): 定義 截取手機屏幕 并 發(fā)送截圖到電腦 函數(shù)
os.system('adb shell screencap -p /sdcard/autojump.png') 發(fā)送 截屏命令 到手機
os.system('adb pull /sdcard/autojump.png .') 發(fā)送 拉取圖片到電腦 命令
def jump(distance): 定義 跳躍函數(shù) 形參為距離
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) 發(fā)送 按屏幕命令
fig = plt.figure() 創(chuàng)建一個圖像對象(窗口)
index = 0
cor = [0, 0]
pull_screenshot() 執(zhí)行截屏函數(shù)
img = np.array(Image.open('autojump.png')) Image.open讀取圖片 到名為 img 的圖片數(shù)組
update = True
click_count = 0
cor = []
def update_data(): 定義更新數(shù)據(jù)的函數(shù) 更新圖片
return np.array(Image.open('autojump.png'))
im = plt.imshow(img, animated=True) im = 繪制圖像(數(shù)組名、動畫=打開)
def updatefig(*args): 定義動畫函數(shù)
global update
if update:
time.sleep(1.5)
pull_screenshot()
im.set_array(update_data())
update = False
return im,
def onClick(event): 定義 鼠標點擊 處理函數(shù)
global update
global ix, iy
global click_count
global cor
# next screenshot
ix, iy = event.xdata, event.ydata
coords = []
coords.append((ix, iy)) [(x1,y1)|(x2,y2)]
print('now = ', coords)
cor.append(coords) [[(x1,y1)],[(x2,y2)]]
click_count += 1
if click_count > 1:
click_count = 0
cor1 = cor.pop() [(x2,y2)]
cor2 = cor.pop() [(x1,y1)]
distance = (cor1[0][0] - cor2[0][0])**2 + (cor1[0][1] - cor2[0][1])**2
x2 - x1 y2 - y1
distance = distance ** 0.5
print('distance = ', distance)
jump(distance)
update = True
fig.canvas.mpl_connect('button_press_event', onClick) 鼠標點擊 處理函數(shù) onClick
ani = animation.FuncAnimation(fig, updatefig, interval=50, blit=True)
圖像函數(shù) 動畫函數(shù) 更新頻率50ms 更新所有點
plt.show() 顯示圖像
運行結果:
python wechat_jump_py3.py

第一行 發(fā)送截圖
2 第一次鼠標點擊 生成坐標
3 第二次鼠標點擊 生成坐標
4 計算距離
5 發(fā)送點擊屏幕命令 swipe后面四個參數(shù)是 (滑動起點 x y 滑動終點 x y 滑動用時)
第一次點擊

第二次點擊

- 基于Python實現(xiàn)的掃雷游戲?qū)嵗a
- 點球小游戲python腳本
- 使用Python寫一個小游戲
- python實現(xiàn)數(shù)獨游戲 java簡單實現(xiàn)數(shù)獨游戲
- 簡單實現(xiàn)python數(shù)獨游戲
- Ubuntu下使用Python實現(xiàn)游戲制作中的切分圖片功能
- python編寫彈球游戲的實現(xiàn)代碼
- Python實現(xiàn)Pig Latin小游戲?qū)嵗a
- Python實現(xiàn)的井字棋(Tic Tac Toe)游戲示例
- 詳解Python 實現(xiàn)元胞自動機中的生命游戲(Game of life)
- 用python寫掃雷游戲?qū)嵗a分享
相關文章
Python?Watchdog實現(xiàn)實時監(jiān)控文件系統(tǒng)
Python?Watchdog是一個優(yōu)秀的第三方庫,用于實現(xiàn)高效的文件系統(tǒng)監(jiān)控,本文將為大家詳細介紹一下Python如何使用Watchdog實現(xiàn)實時監(jiān)控文件,需要的可以參考下2023-11-11

