溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python微信跳一跳游戲輔助代碼解析

發布時間:2020-09-23 15:49:40 來源:腳本之家 閱讀:168 作者:烏托邦眺望 欄目:開發技術

這個代碼實現的是   手動點擊起點 和 終點  ,程序自動判斷距離、觸屏時間  完成跳躍 

原理(摘自項目說明頁面):

1. 將手機點擊到“跳一跳”小程序界面;

2. 用Adb 工具獲取當前手機截圖,并用adb將截圖pull上來:

adb shell screencap -p /sdcard/1.png

adb pull /sdcard/1.png .

3. 用matplot顯示截圖;

4. 用鼠標點擊起始點和目標位置,計算像素距離;

5. 根據像素距離,計算按壓時間;

6. 用Adb工具點擊屏幕蓄力一跳:

adb shell input swipe x y x y time

環境準備(window7):

1. 下載 、安裝 python3

2. pip安裝   

cmd窗口中 進入python3根目錄下的script文件夾,

執行命令  

python微信跳一跳游戲輔助代碼解析

則Scripts文件夾下會出現一系列和pip有關的文件,其中有pip.exe

將pip.exe的路徑也添加到環境變量PATH中

在cmd下輸入“pip”,如果能識別"pip"指令,則說明pip安裝成功了

3. adb驅動安裝

adb驅動下載地址:https://adb.clockworkmod.com/

下載完后  將adb 命令 添加到系統環境變量里面

打開CMD控制臺,輸入adb,出現如下界面,即為配置成功。如圖:

python微信跳一跳游戲輔助代碼解析

4.下載源碼

到這一步,我們要將源碼下載到本地電腦里。

github地址:https://github.com/wangshub/wechat_jump_game

5.安裝依賴包

跳一跳微信輔助的最終運行需要很多的Python模塊,作者已經將這些所需要的模塊都寫在了源碼中的requirements.txt中,
所以我們執行命令 pip install -r requirements.txt,即可將這些必須的模塊下載下來,模塊包括有matplotlib,numpy等。

如圖,我們使用CD命令,切換到源碼的下載目錄,

再執行命令pip install -r requirements.txt

6.設置手機權限

將安卓手機用USB與電腦相連接,在安卓手機上打開開發者模式,并開啟USB調試模式,每種安卓手機開啟的方法都不一樣,以小米 Mix2 手機為例,在設置中找到手機版本號,連續點擊5次即可開啟開發者模式然后進入開發者選項打開   usb調試、usb調試(安全設置)、

如果以上操作沒有任何錯誤,那么在CMD控制臺,執行命令 adb devices可顯示當前手機連接的端口號。

7.運行

在以上步驟都沒有任何錯誤的情況下,打開微信,開啟跳一跳小游戲,進入游戲主頁面,然后再打開CMD控制臺,使用CD命令切換目錄,切換到跳一跳輔助的源碼目錄下,執行命令wechat_jump_auto.py。

參數調節請打開源碼目錄下的config文件夾,里面有適配各種屏幕和機型的文件夾,根據自己的分辨率或機型,點擊進入相應文件夾,打開里面的config.json文件,修改參數即可。建議修改前最好備份一份。

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(): 定義 截取手機屏幕 并 發送截圖到電腦 函數
 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() 創建一個圖像對象(窗口) 
index = 0
cor = [0, 0]
pull_screenshot() 執行截屏函數
img = np.array(Image.open('autojump.png')) Image.open讀取圖片 到名為 img 的圖片數組
update = True 
click_count = 0
cor = []
def update_data(): 定義更新數據的函數 更新圖片
 return np.array(Image.open('autojump.png'))
im = plt.imshow(img, animated=True)  im = 繪制圖像(數組名、動畫=打開)
def updatefig(*args):  定義動畫函數
 global update
 if update:
  time.sleep(1.5)
  pull_screenshot()
  im.set_array(update_data())
  update = False
 return im,
def onClick(event):   定義 鼠標點擊 處理函數
 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) 鼠標點擊 處理函數 onClick ani = animation.FuncAnimation(fig, updatefig, interval=50, blit=True)
圖像函數 動畫函數 更新頻率50ms 更新所有點 plt.show() 顯示圖像

運行結果:

python wechat_jump_py3.py

 python微信跳一跳游戲輔助代碼解析

第一行 發送截圖

2       第一次鼠標點擊  生成坐標

3       第二次鼠標點擊  生成坐標

4        計算距離

5         發送點擊屏幕命令  swipe后面四個參數是    (滑動起點 x   y     滑動終點   x   y      滑動用時)

第一次點擊

python微信跳一跳游戲輔助代碼解析

第二次點擊

python微信跳一跳游戲輔助代碼解析

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女