精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用Python寫游戲腳本原來這么簡單

開發 后端
本篇文章不是要講Airtest這個怎么用,而是用原始的python+opencv來實現上面的操作。

 前言

最近在玩兒公主連結,之前也玩兒過陰陽師這樣的游戲,這樣的游戲都會有個初始號這樣的東西,或者說是可以肝的東西。

當然,作為一名程序員,肝這種東西完全可以用寫代碼的方式幫我們自動完成。游戲腳本其實并不高深,最簡單的體驗方法就是下載一個Airtest了,直接截幾個圖片,寫幾層代碼,就可以按照自己的邏輯玩兒游戲了。

[[443060]]

當然,本篇文章不是要講Airtest這個怎么用,而是用原始的python+opencv來實現上面的操作。

這兩天我寫了一個公主連結刷初始號的程序,也不能算寫游戲腳本的老手,這篇文章主要是分享一些基礎的技術和使用上的心得吧。

準備工作

首先,我們要完成以下準備。

安卓設備一個:模擬器或者真機都可以。

安裝ADB,并添加到系統的PATH里:adb是用來

安裝tesseract-ocr,并添加到系統的PATH里:幫助我們實現簡單的字符識別

安裝python3.7以上的版本

這里adb和tesseract我放在百度網盤里了,里面順便放了一個錄制的效果視頻。

鏈接:pan.baidu.com/s/1edTPu2o7… 提取碼:33aw

python庫安裝

pipinstall pillow pytesseract opencv-python復制代碼

除此以外,如果有需要可以安裝uiautomator2,這篇文章就不涉及這塊知識了。

使用adb獲取安卓設備

這里我們主要是涉及到單個安卓設備的ADB連接操作,首先我們打開模擬器。

然后我們調用adb devices來獲取當前的安卓設備,我這里是一個模擬器。

接下來可以調用adb shell測試一下是否能進入到安卓設備的shell環境下,確認可以輸入exit退出即可。

如果有的時候進不了shell,可以先調用一下adb kill-server,然后再調用adb devices。

可能常用的ADB Shell命令

接下來是一些ADB的命令操作。通過adb命令,我們可以用python來操作的安卓設備。

屏幕截圖

最常見的操作就是截圖了,先調用screencap截圖放到安卓設備里,然后再把截圖下拉到電腦。 

  1. def take_screenshot():  
  2.     os.system("adb shell screencap -p /data/screenshot.png")  
  3.     os.system("adb pull /data/screenshot.png ./tmp.png") 

下拉文件

下拉文件就是剛剛那個adb pull了,以公主連結為例,以下代碼可以導出賬號信息的xml,以后通過xml就可以登錄了。 

  1. os.system(f"adb pull /data/data/tw.sonet.princessconnect/shared_prefs/tw.sonet.princessconnect.v2.playerprefs.xml ./user_info.xml") 

上傳文件

有了下拉自然就有上傳了,通過adb push即可完成。以公主連結為例,以下代碼可以完成賬號的切換。 

  1. # 切換賬號1  
  2. os.system("adb push ./user_info1.xml /data/data/tw.sonet.princessconnect/shared_prefs/tw.sonet.princessconnect.v2.playerprefs.xml")  
  3. # 切換賬號2 
  4. os.system("adb push ./user_info2.xml /data/data/tw.sonet.princessconnect/shared_prefs/tw.sonet.princessconnect.v2.playerprefs.xml") 

點擊屏幕某個位置 

  1. def adb_click(center, offset=(0, 0)):  
  2.     (x, y) = center  
  3.     x += offset[0]  
  4.     y += offset[1]  
  5.     os.system(f"adb shell input tap {x} {y}") 

輸入文字 

  1. text = "YourPassword"  
  2. os.system(f"adb shell input text {text}") 

刪除字符

有的時候輸入框會有輸入的緩存,我們需要刪除字符。 

  1. # 刪除10個字符  
  2. for i in range(10):  
  3.     os.system("adb shell input keyevent 67") 

查詢當前運行的包名和Activity

通過以下代碼,可以查詢當前運行的程序的Activity,也可以順便查包名。 

  1. adb shell dumpsys activity activities 

停止某個應用

有時候會需要停止某個應用,需要提供應用的包名。 

  1. adb shell am force-stop tw.sonet.princessconnect 

開啟某個應用

開啟某個應用需要提供包名以及Activity。 

  1. adb shell am start -W -n tw.sonet.princessconnect/jp.co.cygames.activity.OverrideUnityActivity 

圖像操作

對于圖像的操作第一就是圖像查找了,比如說像Airtest提供的這種,無非就是判斷某個圖像在不在截屏中,在的話在什么位置。

除此之外還需要一些摳圖,比如說我們想獲取賬號的id,賬號的等級,需要截取出一部分圖片然后進行OCR操作。

圖像查找

圖像查找其實就是先拿到兩張圖片,然后調用cv2.matchTemplate方法來查找是否存在以及位置,這里匹配是一個相對模糊的匹配,會有一個相似度的概率,最高是1。我們設定一個閾值來判斷模板是否在截屏里即可。

這里截屏如下,文件名為tmp.png:

模板如下:

[[443062]]

代碼如下: 

  1. import cv2  
  2. def image_to_position(screen, template):  
  3.     image_x, image_y = template.shape[:2]  
  4.     result = cv2.matchTemplate(screen, template, cv2.TM_CCOEFF_NORMED)  
  5.     min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)  
  6.     print("prob:", max_val)  
  7.     if max_val > 0.98:  
  8.         global center  
  9.         center = (max_loc[0] + image_y / 2, max_loc[1] + image_x / 2)  
  10.         return center  
  11.     else:  
  12.         return False  
  13. if __name__ == "__main__":  
  14.     screen = cv2.imread('tmp.png')  
  15.     template =  cv2.imread('Xuandan.png')  
  16.     print(image_to_position(screen, template)) 

運行上述代碼后,可以看到模板匹配出來的概率為0.9977,位置為(1165, 693),對于一張圖片,左上角為原點,因為我的分辨率是1280 * 720,那么右下角的坐標就是(1280, 720)??梢钥吹轿覀冞@個選單其實就是剛好在右下角的位置。

如何快速裁剪模板?(win10)

游戲腳本其實并不是代碼很難寫,而是需要截很多的圖,這些圖要保證分辨率和原始一樣。我發現在win10如果用畫圖打開圖片

可以保證使用QQ截屏出來的分辨率,和圖片本身的分辨率一樣。

這個時候直接用qq截屏出來的模板即可直接用于識別。

圖像裁剪

接下來就是有時候需要裁剪一些圖像了,當然我們的模板圖片也可以通過裁剪圖片的方式得到,這樣的模板圖片是最準的。

裁剪其實就是需要裁剪的位置,以及需要的高度和寬度,說白了就是一篇長方形的區域,下面的代碼使用PIL庫實現。 

  1. from PIL import Image  
  2. def crop_screenshot(img_file, pos_x, pos_y, width, height, out_file):  
  3.     img = Image.open(img_file)  
  4.     region = (pos_x, pos_y, pos_x + width, pos_y + height)  
  5.     cropImg = img.crop(region)  
  6.     cropImg.save(out_file)  
  7.     print("exported:", out_file)  
  8. if __name__ == "__main__":  
  9.     crop_screenshot("tmp.png", 817,556, 190, 24, "test_id.png") 

上面的代碼以截取玩家的id為例。

運行代碼后,得到截圖如下:

簡單的OCR

得到了以上的圖片信息后就是進行OCR了,也就是光學字符識別。這里代碼非常簡單,只要調用API即可。 

  1. from PIL import Image  
  2. import pytesseract  
  3. image = Image.open('test_id.png')  
  4. content = pytesseract.image_to_string(image)   # 識別圖片  
  5. print(content) 

不過需要注意的一點就是pytesseract識別出來的結果會有空格符,換行符這樣的符號,真正要用的時候進行一些字符的過濾即可。

The End

這篇文章到這里就結束了,主要還是介紹一些ADB以及圖像相關的基礎操作。謝謝大家的觀看。 

 

責任編輯:龐桂玉 來源: 馬哥Linux運維
相關推薦

2022-01-27 14:12:49

Python游戲腳本

2021-04-19 05:42:51

Mmap文件系統

2023-11-01 14:49:07

2020-11-02 14:38:56

Java 深度學習模型

2023-09-22 08:00:00

分布式鎖Redis

2020-11-27 10:34:01

HTTPHTTPS模型

2020-09-24 06:44:54

HTTPS網站 HTTP

2014-10-08 15:00:50

SUSE操作系統云計算

2019-03-15 10:55:12

通信系統手機

2021-08-29 18:13:03

緩存失效數據

2010-08-02 13:55:20

2014-11-25 15:02:01

客服系統

2025-07-28 01:22:00

2016-03-21 11:09:52

Tableau/大數據

2025-03-20 12:33:36

2020-10-22 08:01:52

XMLJSON轉換

2021-06-10 06:57:39

Redis存儲數據庫

2019-05-27 14:03:48

開發技能代碼

2024-10-17 16:55:08

2022-11-02 19:08:48

微服務輪詢消費者
點贊
收藏

51CTO技術棧公眾號

亚洲高清久久网| 亚洲欧美区自拍先锋| 日本高清+成人网在线观看| 国产伦精品一区二区三区视频女| 国产a亚洲精品| 亚洲综合色视频| 色之综合天天综合色天天棕色| 国产青青草视频| 亚洲在线播放| 欧美大尺度激情区在线播放| 久久亚洲AV成人无码国产野外 | 中文字幕精品在线不卡| 亚洲最大福利网站| 无码人妻一区二区三区线| 亚洲国产日韩欧美在线| 亚洲欧美一区二区精品久久久| 欧美大片久久久| 国产一二在线播放| 亚洲欧美经典视频| 日本一区二区三区免费观看| www.精品视频| 奇米色一区二区| 69久久夜色精品国产69| 少妇被躁爽到高潮无码文| 三级小说欧洲区亚洲区| 欧美成va人片在线观看| 日日躁夜夜躁aaaabbbb| 都市激情亚洲一区| 亚洲不卡av一区二区三区| 成年人黄色在线观看| 免费在线视频一级不卡| 成人一区二区三区视频在线观看| 国产区亚洲区欧美区| av一级在线观看| 99国产成+人+综合+亚洲欧美| 久久激情视频久久| 中文字幕人妻一区二区三区在线视频| 韩国女主播一区二区三区| 欧美一区二区在线免费观看| 91色国产在线| 国产一区二区精品调教| 日本乱码高清不卡字幕| av免费观看网| 久久男人天堂| 偷窥国产亚洲免费视频| 妞干网在线视频观看| 国产第一页在线视频| 一区二区三区在线免费播放| 熟女熟妇伦久久影院毛片一区二区| 成人亚洲综合天堂| 久久久久久久精| 久久资源亚洲| 日本人妖在线| 久久久精品国产免大香伊| 免费日韩av电影| 天堂av网在线| 久久久久久久国产精品影院| 欧美一卡2卡3卡4卡无卡免费观看水多多 | 一区在线观看| 欧美极品第一页| 国产五月天婷婷| 亚洲久久一区二区| 欧美亚洲一级片| 国产精品久久久久久久久夜色| 欧美中文日韩| 国产精品三级在线| 国产精品亚洲lv粉色| 国内精品在线播放| 3d动漫精品啪啪一区二区三区免费| 国产成人免费看一级大黄| 国产乱对白刺激视频不卡| 99久久精品免费看国产一区二区三区 | 欧美老熟妇乱大交xxxxx| 精品一区亚洲| 深夜福利91大全| 黄色a级片在线观看| 欧美日韩国产精品一区二区亚洲| 国内外成人免费激情在线视频| 日韩av免费网址| 三级亚洲高清视频| 国产日韩精品在线播放| 亚洲精品.www| 久久精品欧美一区二区三区不卡| 亚洲福利av| 天堂成人av| 色综合天天在线| 亚洲美女性囗交| 精品精品精品| 中文字幕在线看视频国产欧美| 永久久久久久久| 亚洲欧美网站| 国产在线观看一区二区三区| 国产综合视频在线| 国产欧美一区视频| 日韩欧美精品免费| 不卡亚洲精品| 亚洲国产成人久久综合| 中文字幕伦理片| 精品成人国产| 国产精品亚洲第一区| 免费看av毛片| 国产精品久久久久久妇女6080| 老子影院午夜伦不卡大全| 午夜精品久久久久久久久久蜜桃| 91精品国产综合久久香蕉的特点| 国产极品一区二区| 婷婷久久一区| 日本精品视频网站| 午夜精品久久久久久久99老熟妇 | 日韩一卡二卡在线观看| 亚洲激情偷拍| 91免费综合在线| 九色视频在线观看免费播放| 亚洲综合图片区| 色婷婷一区二区三区av免费看| 麻豆精品99| 久久97精品久久久久久久不卡| 亚洲精品毛片一区二区三区| 成人av网在线| 狠狠精品干练久久久无码中文字幕| 午夜无码国产理论在线| 精品国产污污免费网站入口 | 国产精品天堂| 精品国产91乱高清在线观看| 国产精品19p| 91日韩欧美| 国产精品久久久久9999| 免费av在线电影| 狠狠久久五月精品中文字幕| 国产调教打屁股xxxx网站| 国产精品国内免费一区二区三区| 奇米四色中文综合久久| 免费观看a视频| 亚洲一区二区在线免费观看视频| 日韩av片免费观看| 99精品美女| 国产美女久久精品香蕉69| 蜜桃视频在线观看视频| 天天影视涩香欲综合网| 久久精品无码专区| 欧美激情第二页| 亚洲aa中文字幕| www红色一片_亚洲成a人片在线观看_| 欧美日韩精品一区视频| av电影网站在线观看| 久久婷婷影院| 欧美性色黄大片人与善| 东京一区二区| 影音先锋日韩有码| 一级黄色大片免费| 成人免费在线播放视频| 天天综合成人网| 国产精品久久天天影视| 95av在线视频| 中文在线免费| 精品国产一区二区三区av性色| 精品无码久久久久久久| 成人a区在线观看| 国模吧无码一区二区三区| 九九在线高清精品视频| 国产成人中文字幕| 五月婷婷在线观看| 欧美一级二级在线观看| 国产无遮无挡120秒| 99精品视频中文字幕| 日本黄网站免费| 精品成人影院| 成人免费福利视频| 牛牛精品在线| 亚洲免费人成在线视频观看| 午夜精品免费观看| 亚洲欧洲精品成人久久奇米网| 99999精品| 亚洲美女一区| 亚洲高清视频在线观看| 日韩精品一区国产| 91福利视频网| 伊人免费在线| 亚洲高清在线观看| 波多野结衣mp4| 亚洲欧美成人一区二区三区| a级片在线观看视频| 日韩av电影天堂| av动漫在线播放| 国产91精品对白在线播放| 成人午夜高潮视频| 色黄视频在线观看| 日韩在线视频网站| 人人妻人人澡人人爽久久av| 在线视频欧美精品| 久久综合亚洲色hezyo国产| 99久久夜色精品国产网站| 日韩一区二区三区久久| 亚洲国产专区校园欧美| 亚洲精品8mav| 伦理一区二区三区| 91社区国产高清| 亚洲三级欧美| 欧美精品手机在线| 搞黄视频免费在线观看| 精品对白一区国产伦| 一区二区视频网站| 偷偷要91色婷婷| 日本高清一二三区| 久久久久久久综合日本| 中文字幕永久免费| 精东粉嫩av免费一区二区三区| 欧日韩免费视频| 99久久www免费| 免费试看一区| 精品伊人久久久| 91嫩草国产在线观看| 亚洲91在线| 国产精品91免费在线| 成人ssswww在线播放| 欧美裸体xxxx极品少妇| 欧美jizzhd欧美| 国产一区二区三区在线免费观看| 人妻丰满熟妇av无码区hd| 欧美一区二区在线不卡| 中文字幕一区二区在线视频| 欧美性高潮床叫视频| 久久久久亚洲av无码专区 | 一本一道久久a久久精品综合| 免费观看成人www动漫视频| 99精品国产一区二区| 91精品网站在线观看| 国产精品6699| 成人免费看黄| 欧美一级电影久久| 日韩欧美精品一区二区三区| 国内精品400部情侣激情| 深夜国产在线播放| 不卡中文字幕av| 中文字幕在线播放网址| 久久成人亚洲精品| 岛国成人毛片| 超在线视频97| 中国av在线播放| 欧美激情中文网| av资源在线播放| 国语自产精品视频在线看一大j8| 免费男女羞羞的视频网站在线观看| 久久亚洲欧美日韩精品专区| 超碰在线网址| 欧美大片大片在线播放| 亚洲91av| 久久久这里只有精品视频| 91超碰国产在线| 亲爱的老师9免费观看全集电视剧| 日韩伦理在线| 国产精品爱久久久久久久| 国产精品字幕| 国产在线观看精品| 亚洲码欧美码一区二区三区| yellow视频在线观看一区二区| 视频成人永久免费视频| 国产精品久久精品国产| 蜜桃久久久久| 青青影院一区二区三区四区| jizzjizz欧美69巨大| 一区不卡视频| 欧美久久九九| 无码人妻精品一区二区三区在线| 午夜一区二区三区不卡视频| 99热这里只有精品在线播放| 精品一区二区三区在线观看国产| 欧洲在线免费视频| 成人黄色在线看| 国产色视频一区二区三区qq号| 欧美激情资源网| 国产精品 欧美激情| 五月婷婷久久丁香| 日韩中文字幕高清| 91精品中文字幕一区二区三区| 亚洲av无码国产精品永久一区| 亚洲精品白浆高清久久久久久| 韩国中文字幕2020精品| 久久av红桃一区二区小说| 丁香花电影在线观看完整版| 日本中文字幕成人| 午夜不卡一区| 精品乱色一区二区中文字幕| 日本在线电影一区二区三区| 日本老太婆做爰视频| 在线亚洲国产精品网站| 亚洲美女性囗交| 久久伊99综合婷婷久久伊| a一级免费视频| 婷婷综合五月天| 国产影视一区二区| 日韩精品福利网站| 久久bbxx| 日本精品久久久| 五月亚洲婷婷| 日韩片电影在线免费观看| 99久久婷婷这里只有精品| 青青草成人免费在线视频| 精品无人区卡一卡二卡三乱码免费卡| 亚洲男女在线观看| 最近日韩中文字幕| 欧美brazzers| 精品捆绑美女sm三区| 91高清在线| 2024亚洲男人天堂| 视频成人永久免费视频| 亚洲人体一区| 丝袜a∨在线一区二区三区不卡| 欧美人与性动交α欧美精品| 中文字幕不卡三区| 国产精品国产三级国产专区52| 91精品国产福利| 91在线视频| 国产成人精品日本亚洲| 麻豆一区二区麻豆免费观看| 91xxx视频| 久久99久久99小草精品免视看| 日本丰满少妇裸体自慰| 亚洲国产精品影院| 国产特级aaaaaa大片| 伊人久久久久久久久久久久久| 黄色视屏在线免费观看| 国产91一区二区三区| 欧美影院一区| 午夜免费一级片| 国产精品久久久久一区| 亚洲精品久久久久久久蜜桃| 亚洲欧美激情精品一区二区| yellow字幕网在线| 国产中文一区二区| 今天的高清视频免费播放成人| 欧美一区二区三区影院| 最近中文字幕一区二区三区| 91精品国自产| www.精品av.com| 日韩午夜视频在线| 亚洲欧洲久久| 久久超碰97人人做人人爱| 超碰人人人人人人人| 欧美中文字幕一区二区三区亚洲| 欧美一区二区少妇| 国产91九色视频| 国产成人三级| 天天操天天摸天天爽| 中文字幕第一区| 亚洲一级黄色大片| www.亚洲免费视频| 精品午夜视频| 国产又粗又猛又爽又黄的网站| 国产高清亚洲一区| 久久国产精品波多野结衣av| 精品久久久久久久久久久久久久久 | 天天综合天天综合色| 亚洲av成人无码网天堂| 欧美性在线观看| 国产欧美一区二区精品久久久| 亚洲欧美另类动漫| 国产精品久久久久久久久免费樱桃 | 亚洲人人精品| 日本japanese极品少妇| 日本久久精品电影| 免费黄色电影在线观看| 91手机在线观看| 在线综合亚洲| 韩国三级hd中文字幕| 8v天堂国产在线一区二区| 制服丝袜在线播放| 久久久www免费人成黑人精品| 久久午夜激情| 搜索黄色一级片| 亚洲精品电影在线观看| 免费成人直播| 国产一区一区三区| 成人黄色大片在线观看| 日本免费精品视频| 久久视频在线播放| 美女扒开腿让男人桶爽久久动漫| 992kp快乐看片永久免费网址| 亚洲婷婷综合色高清在线| 男人天堂av网| 国产精品影院在线观看| 黄色亚洲在线| 日本欧美一区二区三区不卡视频| 欧美精品777| 日韩电影毛片| 国产手机视频在线观看| 99精品国产热久久91蜜凸| 一级欧美一级日韩| 91精品国产91久久久| 久久精品国产68国产精品亚洲| 色婷婷狠狠18禁久久| 欧美色偷偷大香| 超碰97国产精品人人cao| 亚洲图片都市激情| 99久久久久免费精品国产| 艳母动漫在线免费观看| 欧美日韩一区二区三区四区在线观看 | 色94色欧美sute亚洲线路一ni| 黄在线免费看| 久久一区二区精品|