使用python編程自動(dòng)玩手游

我們?cè)谕媸钟蔚臅r(shí)候,會(huì)發(fā)現(xiàn)手游中有些步驟總是需要重復(fù)玩索赏,每天都要重復(fù)盼玄,比如重復(fù)做日常任務(wù)啥的,一直肝個(gè)不停参滴,但是其實(shí)很多東西都是固定玩法了强岸,但是就是需要你機(jī)械的重復(fù)锻弓,我就沒(méi)見(jiàn)過(guò)什么手游是不肝的砾赔,就算自詡?cè)鞒套詣?dòng)化的手游,總還是有些東西需要重復(fù)做的青灼。

那么怎么讓程序幫我們自動(dòng)玩手游呢暴心?接下來(lái)介紹怎么做

想想我們是怎么玩手游的,我們玩手游杂拨,是眼睛識(shí)別手游畫(huà)面专普,然后大腦根據(jù)游戲畫(huà)面指揮手指做出相應(yīng)觸摸,觸控操作弹沽。

因此自動(dòng)化玩手游的技術(shù)要點(diǎn)在于如下兩點(diǎn):

  • 可以向手機(jī)發(fā)送觸摸檀夹,點(diǎn)擊等事件
  • 能夠識(shí)別手游的具體物體對(duì)象

其中第一點(diǎn)可以向手機(jī)發(fā)送觸摸,點(diǎn)擊事件策橘,保證了讓程序可以代替人類手指操作手游畫(huà)面炸渡,第二點(diǎn)則是類似人類眼睛識(shí)別游戲畫(huà)面了。

首先解決第一個(gè)技術(shù)要點(diǎn)丽已,編程向手機(jī)發(fā)送觸摸蚌堵,點(diǎn)擊等事件。

打開(kāi)github項(xiàng)目 https://github.com/openatx/uiautomator2

uiautomator2 這個(gè)項(xiàng)目可以使用python在電腦端控制連接到電腦的手機(jī)

安裝uiautomator2

pip install --upgrade --pre uiautomator2

如果下載很慢沛婴,請(qǐng)使用國(guó)內(nèi)的pip鏡像站吼畏,這是由于大家都知道的原因。。。

pip install --upgrade --pre uiautomator2 -i https://pypi.tuna.tsinghua.edu.cn/simple

安裝完成之后轧抗,連接手機(jī)或者打開(kāi)電腦端的模擬器試試這個(gè)庫(kù)怎么用的究西。

這里我用網(wǎng)易MuMu模擬器做測(cè)試,如果使用真機(jī)測(cè)試的話克伊,請(qǐng)打開(kāi)真機(jī)的usb調(diào)試模式

使用adb devices命令查看電腦連接的設(shè)備钙蒙,執(zhí)行命令后苹威,顯示已經(jīng)有一個(gè)設(shè)備

adb devices

List of devices attached
emulator-5554 device

接下來(lái)打開(kāi)python終端

>>> import uiautomator2 as u2
>>> u2.connect("emulator-5554")
[W 210131 22:27:11 __init__:203] atx-agent has something wrong, auto recovering
[D 210131 22:27:11 __init__:287] device emulator-5554 is online
[I 210131 22:27:11 init:155] uiautomator2 version: 2.12.2
<uiautomator2.Device object at 0x7fba2815ac10>
>>> d = u2.connect("emulator-5554")
>>> print(d.info)
[D 210131 22:27:52 __init__:600] kill process(ps): uiautomator
[D 210131 22:27:53 __init__:619] uiautomator-v2 is starting ... left: 40.0s
[D 210131 22:27:54 __init__:619] uiautomator-v2 is starting ... left: 39.0s
[I 210131 22:27:54 __init__:583] uiautomator back to normal
{'currentPackageName': 'com.mumu.launcher', 'displayHeight': 936, 'displayRotation': 0, 'displaySizeDpX': 853, 'displaySizeDpY': 480, 'displayWidth': 1664, 'productName': 'cancro', 'screenOn': True, 'sdkInt': 23, 'naturalOrientation': True}

可以看到已經(jīng)正常通過(guò)代碼連接到設(shè)備了

執(zhí)行一下點(diǎn)擊事件毅贮,這里的click方法的參數(shù)是點(diǎn)的坐標(biāo)办悟,x和y

>>> d.click(0, 0)

這樣子,我們有了可以往設(shè)備發(fā)送點(diǎn)擊事件的能力了滩褥,觸摸和雙擊病蛉,滑動(dòng)這些都是可以支持的,具體可以看uiautomator2 項(xiàng)目的主頁(yè)

接下來(lái)是解決如何識(shí)別手游物體的功能和技術(shù)要點(diǎn)瑰煎,這一點(diǎn)uiautomator2也幫我們實(shí)現(xiàn)了铺然。

也就是圖像匹配,在使用這個(gè)功能之前需要先把依賴安裝上

pip install -U "uiautomator2[image]" -i https://pypi.doubanio.com/simple

目前開(kāi)放兩個(gè)接口

imdata = "target.png" # 也可以是URL, PIL.Image或OpenCV打開(kāi)的圖像

d.image.match(imdata) 
# 匹配待查找的圖片酒甸,立刻返回一個(gè)結(jié)果
# 返回一個(gè)dict, eg: {"similarity": 0.9, "point": [200, 300]}

d.image.click(imdata, timeout=20.0)
# 在20s的時(shí)間內(nèi)調(diào)用match輪詢查找圖片魄健,當(dāng)similarity>0.9時(shí),執(zhí)行點(diǎn)擊操作

注意相關(guān)的圖片需要手機(jī)的原圖裁剪后的圖才可以插勤,也就是使用里面的screenshot功能截圖裁剪出來(lái)的相關(guān)圖片才可以沽瘦。

所以我們借助uiautomator2可以編程實(shí)現(xiàn)自動(dòng)化玩手游

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市农尖,隨后出現(xiàn)的幾起案子析恋,更是在濱河造成了極大的恐慌,老刑警劉巖盛卡,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件助隧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡滑沧,警方通過(guò)查閱死者的電腦和手機(jī)并村,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)滓技,“玉大人哩牍,你說(shuō)我怎么就攤上這事≈呈簦” “怎么了姐叁?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)洗显。 經(jīng)常有香客問(wèn)我外潜,道長(zhǎng),這世上最難降的妖魔是什么挠唆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任处窥,我火速辦了婚禮,結(jié)果婚禮上玄组,老公的妹妹穿的比我還像新娘滔驾。我一直安慰自己谒麦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布哆致。 她就那樣靜靜地躺著绕德,像睡著了一般。 火紅的嫁衣襯著肌膚如雪摊阀。 梳的紋絲不亂的頭發(fā)上耻蛇,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音胞此,去河邊找鬼臣咖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛漱牵,可吹牛的內(nèi)容都是我干的夺蛇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼酣胀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼刁赦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起灵临,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤截型,失蹤者是張志新(化名)和其女友劉穎趴荸,沒(méi)想到半個(gè)月后儒溉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡发钝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年顿涣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酝豪。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涛碑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出孵淘,到底是詐尸還是另有隱情蒲障,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布瘫证,位于F島的核電站揉阎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏背捌。R本人自食惡果不足惜毙籽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望毡庆。 院中可真熱鬧坑赡,春花似錦烙如、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至螟加,卻和暖如春刀闷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仰迁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工甸昏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人徐许。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓施蜜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親雌隅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子翻默,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容