国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

微信跳一跳小游戲python腳本

2020-02-16 11:28:42
字體:
來源:轉載
供稿:網友

Python編寫微信小游戲“跳一跳”的運行腳本,分享給大家。

更新了微信后發現了一款小游戲跳一跳,但是玩了一下午最高才達到200,每次差點破紀錄后總是手抖就掛掉了,氣的想要砸手機。閑來無事刷微博的時候正好看到有人分析如何編寫腳本自動運行游戲破了3000多分,細看后覺得原理并不復雜,就索性花了一個晚上,參考大神的實現方法,在他的基礎上刪減了一些代碼,也用Python寫了個腳本。接下來進行原理和代碼分析。

圖1.跳一跳啟動界面

原理

配置adb環境變量,在我的電腦–》屬性–》高級系統設置–》環境變量–》Path上添加adb.exe所在的路徑。

打開手機的usb調試模式,并連接電腦,打開跳一跳,然后通過adb工具獲取當前手機截圖,具體指令如下所示:

adb shell screencap -p /sdcard/1.png
adb pull /sdcard/1.png
在程序中的具體代碼實現如下所示:

def screenshot(): cmd = 'adb shell screencap -p /sdcard/1.png' os.system(cmd) cmd = 'adb pull /sdcard/1.png' os.system(cmd)

查找棋子的位置,通過顏色來識別棋子,通過將棋子底盤所在行的所有點的x軸坐標相加,然后取平均值獲得X軸坐標,將Y軸坐標取最低點減去棋子底盤高度的一半。具體代碼實現如下:

#開始查找棋子的坐標,從start_y開始據目測棋子不會位于屏幕底部1/3處for i in range(start_y, int(height * 2 / 3)): for j in range(border_x, width - border_x): #刪除周圍空白部分,加快程序運行速度 next_point = im[j,i] # 根據棋子的顏色判斷,求所有點的和然后求平均值 if (50 < next_point[0] < 60) and (53 <next_point[1] < 63) and (95 < next_point[2] < 110): x1_temp += j #點求和 x1_num += 1 #點的個數 y1_max = max(i, y1_max)if not all((x1_temp,x1_num)): return 0,0,0,0x1 = x1_temp / x1_numy1 = y1_max - piece_height/2 # 棋子Y軸坐標上移到底盤高度的一半

查找下一個棋盤的位置,一般可以通過兩種方法實現。第一種是通過鼠標點擊下一個棋盤的位置,具體參考編程美麗寫的博客。

第二種是本文使用的,從上往下一行一行掃描,找到塊中點的X軸坐標,然后通過截圖中兩個具體的棋盤獲取的固定的角度,即正切值來推出中點的 Y坐標。 具體代碼如下:

#查找下一個棋盤的位置for i in range(start_y, height * 2 / 3): start_point = im[0, i] if x2 or y2: break x2_temp = 0 x2_num = 0 for j in range(width): next_point = im[j,i] if abs(j - x1) < body_width: continue # 棋盤為圓 if abs(next_point[0] - start_point[0]) + abs(next_point[1] - start_point[1]) + abs(next_point[2] - start_point[2]) > 10: x2_temp += j x2_num += 1 if x2_temp: x2 = x2_temp / x2_num# 按實際的角度通過tan值來算計算下一個棋盤的中心點的Y軸坐標y2 = y1 - abs(x2 - x1) * abs(sample_y1 - sample_y2) / abs(sample_x1 - sample_x2)if not all((x2, y2)): return 0, 0, 0, 0            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西宁市| 偏关县| 新竹市| 工布江达县| 乐亭县| 武宣县| 洪雅县| 巫溪县| 灵石县| 罗山县| 泽普县| 琼中| 南召县| 中江县| 通城县| 武陟县| 青州市| 西和县| 商都县| 宝山区| 越西县| 博罗县| 济源市| 池州市| 同心县| 永和县| 南岸区| 固阳县| 渝北区| 永仁县| 安国市| 龙井市| 西畴县| 广平县| 怀来县| 永仁县| 呼伦贝尔市| 江北区| 灵寿县| 泰来县| 武功县|