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

來源:互聯網
上載者:User

python跳一跳遊戲輔助代碼解析,python代碼

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

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

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檔案夾,

執行命令  

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

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

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

3. adb驅動安裝

adb驅動:https://adb.clockworkmod.com/

下載完後  將adb 命令 添加到系統內容變數裡面

開啟CMD控制台,輸入adb,出現如下介面,即為配置成功。

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 npimport matplotlib.pyplot as pltimport matplotlib.animation as animationfrom PIL import Imageimport mathimport timeimport osdef 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 = 0cor = [0, 0]pull_screenshot() 執行截屏函數img = np.array(Image.open('autojump.png')) Image.open讀取圖片 到名為 img 的圖片數組update = True click_count = 0cor = []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 = Truefig.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

 

第一行 發送

2       第一次滑鼠點擊  產生座標

3       第二次滑鼠點擊  產生座標

4        計算距離

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

第一次點擊

第二次點擊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.