Python製作回合遊戲自動完成任務輔助腳本,進階篇
引入:
自動組隊刷道的流程是先點擊刷道按鈕、再點擊前往按鈕、再點擊便捷組隊······
這些操作上篇博文已經告訴我們怎麼做了,利用picpick丈量坐標,再用autopy模擬滑鼠點擊
但是點擊過便捷組隊後如何實現自動創建隊伍並匹配隊友呢?
這裡要用到文字識別
玩過問道的都知道,沒有隊友或者隊友數量沒到4的時候,隊伍會存在守護,如下
並且守護的位置是固定的,守護的優先順序是從左到右,例如,匹配到一個隊友,斗闕長老就會消失(不會參戰);再匹配一個隊友,白骨長老就會消失(不會參戰)
我的思路是,隔一段時間對夜神模擬器截圖,再對這張截圖文字識別,判斷「斗闕長老」和「白骨長老」是否存在於識別出的字元串中。當然,也可以判斷長老數量是否小於等於2
因為玩過回合制的知道,隊伍達到三個人就可以發車了,做任務的過程中系統會自動匹配隊友,直到匹配滿為止
前期準備:
利用PIL的ImageGrab截圖
安裝PIL
我這裡是用PyCharm直接安裝的依賴包
直接運行,會發現在當前目錄下有一個as.png的截圖文件
官方文檔對grab方法給出的解釋
這裡bbox = (x1,y1,x2,y2),意思是從屏幕坐標(x1,y1)到(x2,y2)的一段區域
利用baidu-aip進行文字識別
我嘗試過pytesseract和pytesser的文字識別,經常會出現識別失敗,對中文的支持也不夠友好
所以我這裡選用baidu-aip進行文字識別
PyCharm打開File->Settings->加號
搜索baidu-aip,再點擊左下角Install Package
我們需要APPP_ID、API_KEY、SECRET_KEY,我們去百度雲申請
登錄百度雲,百度雲盤和百度貼吧賬號可以直接使用,沒有的話申請一個百度賬號
找到文字識別
點擊創建應用
完成創建,個人用戶一天可以免費識別600次
需要識別文字的圖片用下圖
可以看到結果
回到頂部
開始製作外掛:
和上篇博客一樣,先丈量坐標,坐標根據解析度不同而不同,我這裡是1920*1080
刷道按鈕的坐標是(809,222)
前往按鈕的坐標是(1101,646)
便捷組隊的坐標是(1449,730)
創建隊伍按鈕(998,799)
開始匹配(1232,794)
丈量坐標完畢後,調用文字識別,判斷「斗闕長老」和「白骨長老」是否存在於識別的字元串中
如果兩位長老都不存在,說明隊伍里已經有三人。此時關閉刷道窗口,點擊陸壓真人,對話,開始刷道
設置十輪刷道時間,十輪刷道任務結束後開始新的一輪刷道
詳細代碼如下:
imageGrabUtil.py(截圖工具)
baiduAipUtil.py(文字識別工具)
我這裡百度雲的APPP_ID、API_KEY、SECRET_KEY保存在config.ini
config.ini
shuaDao.py
再次強調,我的代碼不一定在你的電腦上可以運行,我的電腦解析度是1920*1080,模擬器的位置是默認的放在中央,模擬器移動的話丈量的坐標都不一樣
製作外掛最重要的是思想方法
※Python入門教程——邏輯運算符、身份運算符和成員運算符
※Python運維開發哪家好
TAG:python |