日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

跳一跳python源码_使用Python实现跳一跳自动跳跃功能

發(fā)布時(shí)間:2025/3/12 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 跳一跳python源码_使用Python实现跳一跳自动跳跃功能 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用Python實(shí)現(xiàn)跳一跳自動(dòng)跳躍功能

來(lái)源:中文源碼網(wǎng)????瀏覽: 次????日期:2019年11月5日

【下載文檔:??使用Python實(shí)現(xiàn)跳一跳自動(dòng)跳躍功能.txt?】

(友情提示:右鍵點(diǎn)上行txt文檔名->目標(biāo)另存為)

使用Python實(shí)現(xiàn)跳一跳自動(dòng)跳躍功能1. OpenCV:模板匹配。 獲得小跳棋中心位置

2. OpenCV:邊緣檢測(cè)。 獲得下一方塊中心位置Python+ADB+OpenCv,實(shí)現(xiàn)「 跳一跳 」自動(dòng)化。

/ 01 / ADB

ADB工具即Android Debug Bridge(安卓調(diào)試橋) tools。

ADB 是一個(gè)命令行窗口,用于通過(guò)電腦端與模擬器或者真實(shí)設(shè)備交互。

與之前小F接觸過(guò)的Appium有點(diǎn)相似。

ADB的安裝很簡(jiǎn)單,就是將安裝包解壓后,將路徑添加到系統(tǒng)的環(huán)境變量中即可。

然后使用Python的os模塊執(zhí)行ADB命令。

def get_screenshot():

# 截取手機(jī)的屏幕

os.system('adb shell /system/bin/screencap -p /sdcard/screencap.png')

# 把模擬器里面的文件或文件夾傳到電腦上

os.system('adb pull /sdcard/screencap.png screencap.png')

def jump(distance):

# 設(shè)置按壓時(shí)間,系數(shù)為1.35

press_time = int(distance * 1.35) # 生成隨機(jī)手機(jī)屏幕模擬觸摸點(diǎn),防止成績(jī)無(wú)效

# 生成隨機(jī)整數(shù)(0-9),最終數(shù)值為(0-90)

rand = random.randint(0, 9) * 10

# adb長(zhǎng)按操作,即在手機(jī)屏幕上((320-410),(410-500))坐標(biāo)處長(zhǎng)按press_time毫秒

cmd = ('adb shell input swipe %i %i %i %i ' + str(press_time)) % (320 + rand, 410 + rand, 320 + rand, 410 + rand)

# 輸出adb命令

print(cmd)

# 執(zhí)行adb命令

os.system(cmd)本次涉及到的ADB命令,就只有三個(gè),不多。

一個(gè)截屏,一個(gè)推送手機(jī)截圖到電腦上,最后模擬長(zhǎng)按手機(jī)屏幕。

/ 02 / 跳動(dòng)實(shí)現(xiàn)

先檢測(cè)游戲結(jié)束畫面。

判斷是否需要結(jié)束游戲程序。

# 游戲結(jié)束的模板圖像

temp_end = cv2.imread('end.jpg', 0)

def game_over(img):

""" 模板匹配,檢測(cè)是否要將程序結(jié)束 """

# 如果在游戲截圖中匹配到帶"再玩一局"字樣的模板,則循環(huán)中止

res_end = cv2.matchTemplate(img, temp_end, cv2.TM_CCOEFF_NORMED)

if cv2.minMaxLoc(res_end)[1] > 0.95:

print('Game over!')

return True模板匹配原理圖如下。

當(dāng)返回的最大矩陣值大于0.95時(shí),則認(rèn)為原始圖像中肯定出現(xiàn)了再玩一局字樣。

則游戲結(jié)束,程序也隨之結(jié)束。

小跳棋的模板匹配代碼如下。

主要是獲取小跳棋的位置,即「跳一跳」起點(diǎn)位置參數(shù)。

# 讀取小跳棋模板圖像

temple = cv2.imread('temple.png', 0)

# 獲取小跳棋模板圖像的高和寬

th, tw = temple.shape[:2]

def get_start(img):

""" 模板匹配,獲取跳一跳起點(diǎn)的位置參數(shù)(小跳棋) """

# 使用標(biāo)準(zhǔn)相關(guān)系數(shù)匹配,1表示完美匹配,-1表示糟糕的匹配,0表示沒有任何相關(guān)性

result = cv2.matchTemplate(img, temple, cv2.TM_CCOEFF_NORMED)

# 使用函數(shù)minMaxLoc,確定匹配結(jié)果矩陣的最大值和最小值(val),以及它們的位置(loc)

min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)

# 得到小跳棋的中心位置參數(shù)

return max_loc[0] + 47, max_loc[1] + 208得到結(jié)果如下。

下面通過(guò)OpenCV的邊緣檢測(cè)獲取「跳一跳」的終點(diǎn)位置。

def get_end(img):

""" 邊緣檢測(cè),獲取跳一跳終點(diǎn)的位置參數(shù)(方塊) """

# 高斯模糊

img_rgb = cv2.GaussianBlur(img, (5, 5), 0)

# 邊緣檢測(cè)

canny_img = cv2.Canny(img_rgb, 1, 10)

# 獲得邊緣檢測(cè)圖像的高和寬

H, W = canny_img.shape # 第一個(gè)頂點(diǎn)的高度

y_top = np.nonzero([max(row) for row in canny_img[400:]])[0][0] + 400

# 第一個(gè)頂點(diǎn)的寬度

x_top = int(np.mean(np.nonzero(canny_img[y_top]))) # 跳過(guò)小白圈,然后遍歷

y_bottom = y_top + 80

for row in range(y_bottom, H):

if canny_img[row, x_top] != 0:

y_bottom = row

break # 得到方塊的中心點(diǎn)

x_center, y_center = x_top, (y_top + y_bottom) // 2

return x_center, y_center邊緣檢測(cè)原理圖如下。

最后便是主程序啦。

# 循環(huán)直到游戲失敗結(jié)束

for i in range(10000):

# 將安卓手機(jī)上的截圖移到電腦當(dāng)前文件夾下

get_screenshot()

# 讀取截圖圖像

img = cv2.imread('screencap.png', 0) # 游戲結(jié)束

if game_over(img):

break # 得到起點(diǎn)位置參數(shù)

x_start, y_start = get_start(img)

# 獲取終點(diǎn)位置參數(shù)

x_end, y_end = get_end(img) # 將起點(diǎn)位置繪制出來(lái),一個(gè)圓

cv2.circle(img, (x_start, y_start), 10, 255, -1)

# 將終點(diǎn)位置繪制出來(lái),一個(gè)圓

img_end = cv2.circle(img, (x_end, y_end), 10, 255, -1)

# 保存圖片

cv2.imwrite('end.png', img_end) # 計(jì)算起點(diǎn)和終點(diǎn)的直線距離,勾三股四弦五

distance = (x_start - x_end) ** 2 + (y_start - y_end) ** 2

distance = distance ** 0.5 # 根據(jù)獲得的距離來(lái)設(shè)置按壓時(shí)長(zhǎng)

jump(distance)

time.sleep(1.3)下面就來(lái)看一下「跳一跳」自動(dòng)跳躍的視頻。

輕輕松松得分,毫無(wú)問題。

/ 03 / 總結(jié)

相關(guān)工具及代碼已上傳網(wǎng)盤,公眾號(hào)回復(fù) 「跳一跳」 即可獲取。

安裝好ADB工具,然后通過(guò)數(shù)據(jù)線將安卓手機(jī)和電腦連接。

最后運(yùn)行代碼, 親測(cè)有效。

當(dāng)然代碼還是有待優(yōu)化的,如下圖~

一方面是得分不高,另一方面就是會(huì)被檢測(cè)到作弊...

總結(jié)

以上所述是小編給大家介紹的使用Python實(shí)現(xiàn)跳一跳自動(dòng)跳躍功能 ,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)中文源碼網(wǎng)網(wǎng)站的支持!

如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

親,試試微信掃碼分享本頁(yè)!?*^_^*

總結(jié)

以上是生活随笔為你收集整理的跳一跳python源码_使用Python实现跳一跳自动跳跃功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。