python腳本 游戲賺金幣兌換錢_一種王者榮耀刷金幣方法(python腳本)

所用工具環境

python3.6.5 和 支持自動鼠標鍵盤點擊等編程的pyautogui功能包

windows PC,安卓模擬器bluestacks,安裝王者榮耀

基本思路

王者榮耀有闖關任務模式可以獲得金幣,任務兩三分鐘一般就可以完成,支持自動模式,一次可獲取三四十金幣,且可以重復刷取。

利用腳本,模擬任務開啟點擊,進入后自動執行,中間對話跳過,最后任務完成檢測,再次啟動任務。均是通過截屏信息獲取當前在做什么,然后應該點擊什么,如此往復執行。

腳本所用關鍵功能說明

網上有關于pyautogui包的使用的一些參考,有一些是相對過期的,功能接口調用存在些差別,可以在安裝pyautogui包后,使用python doc 來查找相關API說明。

pyautogui.screenshot 用于截屏。

下面是py doc中函數原型,可傳入文件名,最終返回截屏圖片,保存在本地

screenshot = _screenshot_win32(imageFilename=None)

pyautogui.locateOnScreen 用于查找局部圖片位置(像素點區域位置)。輸入圖片文件名,最終返回圖片所在位置,如果當前屏幕不存在該圖片,則返回None

locateOnScreen(image, grayscale=False, region=None)

事先截取好中間需要點擊的按鈕圖片,保存在本地,然后截屏中去匹配查找按鈕圖片是否存在及其位置(該函數實際并不需要事先調用screenshot)

pyautogui.center 用于獲取某一像素區域的中心像素點位置。

center(coords)

源文件

pics中是事先截取的

實際運行效果展示

最開始選用最后一個關卡任務(大師級)

下一步,進入任務后,再啟用腳本

后面就自動執行了

錄制過屏幕,markdown下視頻無法上傳,想制作gif來這的,視頻太大需要一定裁剪處理,暫時不會。。

源碼展示

很簡單,重在功能,沒有注重什么規范

(業余python選手,工作之中也是python用于內部工具開發,代碼槽點可能較多)。

# -*- coding: utf-8 -*-

import pyautogui

import time

pyautogui.FAILSAFE = False

screenshot = pyautogui.screenshot

pngLocate = pyautogui.locateOnScreen

def click(x,y):

pyautogui.moveTo(x,y)

pyautogui.click()

def get_button_center_from_screen(button_png,png_path='pics'):

screen = screenshot("screen.png")

button_png = png_path + '\\' + button_png

start_pos = pngLocate(button_png)

if start_pos == None:

#找不到button

print("{} not exsit on current screen".format(button_png))

return 0,0

return pyautogui.center(start_pos)

def AutoMouse():

print("Start")

n = 1

while(n<60):

print("{now} 第{n}次\n".format(now=time.strftime("%m-%d %H:%M:%S"), n=n))

x, y = get_button_center_from_screen('開始闖關.PNG')

click(x,y)

time.sleep(5)

loading = False

#是否正在加載中

while(1):

x,y = get_button_center_from_screen('加載中.PNG')

time.sleep(3)

if (x,y) != (0,0):

break

loading = False

print("加載中\n")

while(1):

x,y = get_button_center_from_screen('加載中.PNG')

if (x,y) == (0,0):

break

print("加載完成\n")

#檢查是否初始畫面需要跳過

x,y = get_button_center_from_screen('跳過.PNG')

if (x,y) == (0,0):

print("no need Jump over")

else:

print("need Jump over")

click(x,y)

#檢查是否已經啟用自動

x,y = get_button_center_from_screen("未啟用自動.PNG")

if (x,y) != (0,0):

print("not auto run")

click(x,y)

else:

print("already auto run")

#運行監測,是否結束,以及中間存在需要跳過,結束則開啟下一次 每5s檢測一次

while(1):

time.sleep(3)

x,y = get_button_center_from_screen('跳過2.PNG')

if (x,y) == (0,0):

print("no need Jump over")

else:

print("need Jump over")

click(x,y)

x,y = get_button_center_from_screen("結束后繼續.PNG")

if (x,y) == (0,0):

print("not over")

else:

print("all over.\n")

click(x,y)

time.sleep(5)

#start 闖關

print("Start again")

x, y = get_button_center_from_screen('再次挑戰.PNG')

n = n+1

click(x,y)

time.sleep(10)

break

if __name__ == '__main__':

AutoMouse()

注意事項

腳本可能需要在管理員權限下執行(cmd啟動時以管理員身份運行)(click執行沒有效果的時候,就是權限問題導致的)

由于電腦尺寸可能不是絕對一樣,所以事先截取的按鈕圖片可能都不一樣,自行截取個人PC上實際王者榮耀刷任務運行時畫面,對應替換

個人在使用過程中遇到過的問題:

有一次晚上掛機,電腦死過機,應該和這個沒關系。。。

安卓模擬器中的王者榮耀出現卡機(手動點擊也是沒有反應,最后只好重啟了模擬器),不知有沒有關系

加載圖片 匹配不到,原因是王者榮耀有更新,任務開始后加載頁面的廣告有變化,建議截取關鍵按鈕時,盡量截取小部分,不要截取太多。

后續

可以做的更好,日志記錄實際運行情況,出問題時,方便回溯。利用圖片識別技術來識別圖片中的文字,來找到對應按鈕的位置。健壯性考慮,如果中間偶爾出現卡機,點擊失效,如何檢測出來,以及后續該怎么處理。當然需要更高的技術要求。喜歡且有相關能力的可以搞一下。

歡迎留言交流 _

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270856.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270856.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270856.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SQL Server數據庫架構與對象相關知識筆記

1、數據庫架構簡介數據庫架構是從SQL Server2005版本之后引入的概念。數據庫架構獨立于創建它的數據厙用戶而存在&#xff0c;每個對象都屬于一個數據庫架構&#xff08;對象包括表、視圖、存儲過程、函數、觸發器等&#xff09;2、 數據庫、架構和數據庫對象數據庫架構是一個獨…

html ajax 數據傳送,HTML AJAX 簡單數據JS

ajax請求var xmlhttp;var data;//Mozilla ,chmore瀏覽器(將XMLHttpRequest對象作為本地瀏覽器對象來創建)if(window.XMLHttpRequest){ //Mozilla 瀏覽器xmlhttp new XMLHttpRequest();}else if(window.ActiveXObject) { //IE瀏覽器//IE瀏覽器(將XMLHttpRequest對象作為ActiveX…

轉換

1024字節1K 1024*10241M 1024K1M 1024M1G 字

蒙提霍爾悖論(三門問題)終極分析(補充)附完整源碼

上一篇文章分析了經典的蒙提霍爾問題&#xff0c;最后的結論是更換選擇后有2/3的機會中獎。蒙提霍爾問題到此已經完結&#xff0c;但事實卻并非如此。 在蒙提霍爾問題中&#xff0c;主持人事先知道汽車在哪個門后面&#xff0c;并且他一定會選擇沒有汽車的那扇門。如果我們稍稍…

超融合和服務器關系_超融合與傳統服務器區別

超融合與傳統服務器的區別1.1概述雖然超融合架構以其為用戶帶來的巨大價值&#xff0c;已經被越來越廣泛地接受&#xff0c;但市場上對超融合仍然有諸多不清晰的概念和疑問&#xff0c;本系列文章將力求對這些概念進行逐一解釋。本篇解釋大家經常問到和混淆的一個概念&#xff…

電腦技巧:整理電腦鍵盤上每個鍵的含義

電腦鍵盤是把文字信息的控制信息輸入電腦的通道&#xff0c;從英文打字機的鍵盤演變而來的。它最早出現在電腦上的時候&#xff0c;還是一種叫做“電傳打字機”的部件。那些陌生的鍵盤按鍵都有什么用途? 很多新手不知道鍵盤上功能鍵和字母數字鍵以外的鍵盤按鍵有什么用&#x…

html統計表合并單元格的快捷鍵,合并單元格快捷鍵,小編教你excel怎么合并單元格快捷鍵...

合并單元格是我們經常要做的工作&#xff0c;如果有合并單元格的快捷鍵正是我們想要的&#xff0c;很遺憾&#xff0c;微軟并沒有直接提供這樣一個快捷鍵&#xff0c;在excel表的運用中&#xff0c;難免會碰到希望將兩個單元格合并的時候&#xff0c;那么怎么做呢&#xff1f;下…

SQLServer數據庫實例相關知識筆記

1、概念介紹SQL實例實際上就是SQL服務器引擎&#xff0c;每個SQL Server數據庫引擎實例各有一套不為其他實例共享的系統及用戶數據庫。在一臺計算機上&#xff0c;可以安裝多個SQL SERVER&#xff0c;每個SQL SERVER就可以理解為是一個數據庫實例。2、SQL實例分類SQL實例分為默…

內存分配策略

舉個例子&#xff0c;比如eden區為16M&#xff0c;s0區為2M,s1區為2M,old區為40M 一個大對象20M,此時eden區&#xff0c;s0區&#xff0c;s1區都放不下&#xff0c;那個大對象直接進入老年帶 M

ajxs跨域 php_PHP項目中是如何處理Ajax請求與Ajax跨域的

PHP項目中是如何處理Ajax請求與Ajax跨域的發布時間&#xff1a;2020-12-14 16:35:47來源&#xff1a;億速云閱讀&#xff1a;98這期內容當中小編將會給大家帶來有關PHP項目中是如何處理Ajax請求與Ajax跨域的&#xff0c;文章內容豐富且以專業的角度為大家分析和敘述&#xff0c…

數據制作

1.數據準備&#xff0c;我們需要一個train和valid文件夾&#xff0c;一個train.txt和val.txt&#xff08;圖片文件夾的位置可以任意&#xff0c;但是這兩個txt文件的位置在data/fingervein/目錄下&#xff09; train和valid文件夾自然就存放著待訓練的圖片&#xff0c;train.tx…

SQLServer數據庫文件組相關知識筆記

1、數據庫文件組概念數據庫文件被組織在稱為“文件組”的邏輯組中。文件組是所創建對象&#xff08;如表或索引&#xff09;的目標容器&#xff0c;對象數據將分散在其所在目標文件組的文件中&#xff0c;文件組可以按你要求的方式來控制對象的物理位置。每個數據庫有一個主文件…

html文件上傳限制類型,html input file accept 上傳文件類型限制格式 MIME 類型列表

單點登錄改進版-使用ajax分發cookie避免重定向輪詢前言 繼上一篇博文:可跨域的單點登錄(SSO)實現方案[附.net代碼]雖然實現了單點登錄,也存在很多不合理的地方.很多熱心的朋友也給出了很多指導性的意見,特別是 LoveCoder提出的意見. 在很 ...Hello Java用記事本或者Eclipse編寫…

jvm配置參數,查看大對象直接分配到老年代

看下如下代碼&#xff1a; 配置參數 -Xms60m -Xms60m -XX:NewRatio2 -XX:SurvivorRatio8 -XX:PrintGCDetails 運行后看下如下&#xff0c;可以看到ParOldGen老年代&#xff0c;為used 20480K&#xff0c;也就20M&#xff0c;說明大對象直接分配到老年代 總結&#xff1a;

win10引導安卓x86_GPDwin安裝安卓x86折騰記

接著之前的http://www.gcfan.cn/archives/3685說。王者榮耀下載下來問題依舊&#xff0c;我就在網上搜索答案。這里必須要感謝一下豆友“放不下的是筷子”&#xff0c;我搜索解決方案的時候發現了他的帖子&#xff0c;就跟帖問了他一下&#xff0c;結果他回復了我不少問題&…

DB Stack Overflow

Whats wrong with nullable columns in composite primary keys? 轉載于:https://www.cnblogs.com/drizzlewithwind/p/5853091.html

電腦組裝筆記:手把手教你如何自己組裝電腦

目錄 第一步&#xff1a;安裝CPU 第二步&#xff1a;安裝內存條 第三步&#xff1a;CPU風扇安裝 第四步&#xff1a;電源安裝 第五步&#xff1a;主板裝入機箱 第六步&#xff1a;硬盤、固態硬盤、光驅的安裝 第七步&#xff1a;線路連接 第八步&#xff1a;顯示器的連接 第九步…

Amoeba for MySQL

Amoeba for MySQL Amoeba for MySQL致力于MySQL的分布式數據庫前端代理層&#xff0c;它主要在應用層訪問MySQL的時候充當query 路由功能&#xff0c;專注 分布式數據庫 proxy 開發。座落與Client、DB Server(s)之間。對客戶端透明。具有負載均衡、高可用性、Query過濾、讀寫分…

jquery 過濾html代碼,jquery – 如何使指令使用過濾的HTML屬性?

您可以使用ng-attr,這將是更方便的解決方案. ng-attr-data-title將評估插值{{}}&使用值創建data-title屬性.而不是使用data-title “{{‘我的字符串’| myfilter}}”使用ng-attr-data-title “{{‘我的字符串’| myfilter}}”標記...更新因為你得到的價值就像{{‘我的字符串…