微信跳一跳輔助python代碼實現(xiàn)
微信跳一跳輔助的python具體實現(xiàn)代碼,供大家參考,具體內(nèi)容如下
這是一個 2.5D 插畫風(fēng)格的益智游戲,玩家可以通過按壓屏幕時間的長短來控制這個「小人」跳躍的距離??赡軇傞_始上手的時候,因為時間距離之間的關(guān)系把握不恰當(dāng),只能跳出幾個就掉到了臺子下面。
玩法類似于《flappy bird》
下載github的一個程序,但是在windows10下不能運行,原因是windows10下沒有copy命令了,修改為Python自帶的復(fù)制方法,即可完成。今天運行好像一開始不能正確跳第一次,人工輔助后,后續(xù)的跳的很好。
部分代碼:
wechat_jump_iOS_py3.py
import wda
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from PIL import Image
import math
import time
import os
# 截圖距離 * time_coefficient = 按鍵時長
# 此數(shù)據(jù)是 iPhoneX 的推薦系數(shù),可根據(jù)手機型號進行調(diào)整
time_coefficient = 0.00125
c = wda.Client()
s = c.session()
def pull_screenshot():
c.screenshot('1.png')
def jump(distance):
press_time = distance * time_coefficient
press_time = press_time
print(press_time)
s.tap_hold(200,200,press_time)
fig = plt.figure()
index = 0
cor = [0, 0]
pull_screenshot()
img = np.array(Image.open('1.png'))
update = True
click_count = 0
cor = []
def update_data():
return np.array(Image.open('1.png'))
im = plt.imshow(img, animated=True)
def updatefig(*args):
global update
if update:
time.sleep(1)
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))
print('now = ', coords)
cor.append(coords)
click_count += 1
if click_count > 1:
click_count = 0
cor1 = cor.pop()
cor2 = cor.pop()
distance = (cor1[0][0] - cor2[0][0])**2 + (cor1[0][1] - cor2[0][1])**2
distance = distance ** 0.5
print('distance = ', distance)
jump(distance)
update = True
fig.canvas.mpl_connect('button_press_event', onClick)
ani = animation.FuncAnimation(fig, updatefig, interval=50, blit=True)
plt.show()
wechat_jump_py3.py
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/1.png')
os.system('adb pull /sdcard/1.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('1.png'))
update = True
click_count = 0
cor = []
def update_data():
return np.array(Image.open('1.png'))
im = plt.imshow(img, animated=True)
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))
print('now = ', coords)
cor.append(coords)
click_count += 1
if click_count > 1:
click_count = 0
cor1 = cor.pop()
cor2 = cor.pop()
distance = (cor1[0][0] - cor2[0][0])**2 + (cor1[0][1] - cor2[0][1])**2
distance = distance ** 0.5
print('distance = ', distance)
jump(distance)
update = True
fig.canvas.mpl_connect('button_press_event', onClick)
ani = animation.FuncAnimation(fig, updatefig, interval=50, blit=True)
plt.show()
原理說明
1. 將手機點擊到《跳一跳》小程序界面;
2. 用Adb 工具獲取當(dāng)前手機截圖,并用adb將截圖pull上來
```shell
adb shell screencap -p /sdcard/1.png
adb pull /sdcard/1.png .
```
3. 用matplot顯示截圖;
4. 用鼠標(biāo)點擊起始點和目標(biāo)位置,計算像素距離;
5. 根據(jù)像素距離,計算按壓時間;
6. 用Adb工具點擊屏幕蓄力一跳;
代碼較多,直接為大家分享源碼下載鏈接,很詳細(xì):微信跳一跳輔助python代碼實現(xiàn)
更多內(nèi)容大家可以參考專題《微信跳一跳》進行學(xué)習(xí)。
相關(guān)文章學(xué)習(xí)推薦:
python基于TensorFlow實現(xiàn)微信跳一跳的AI
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python?matplotlib實戰(zhàn)之散點圖繪制
散點圖,又名點圖、散布圖、X-Y圖,是將所有的數(shù)據(jù)以點的形式展現(xiàn)在平面直角坐標(biāo)系上的統(tǒng)計圖表,本文主要為大家介紹了如何使用Matplotlib繪制散點圖,需要的可以參考下2023-08-08
Python定時任務(wù)APScheduler安裝及使用解析
這篇文章主要介紹了Python定時任務(wù)APScheduler安裝及使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08

