Python简单实现邂逅在迷宫无限十连自动抽卡并根据金卡数量停止程序
步驟:
1.找到手機模擬器的句柄
2.設置模擬器窗口位置和大小
3.鼠標模擬點擊抽卡位置
4.對模擬器進行截圖
5.識別截圖中藍卡 紫卡 金卡數量
因為是自己寫著用,變量名很隨意
首先是找到模擬器的句柄,有了句柄才能操作這個窗口位置大小。這里我用的spy++這個軟件
?
?把這個標移動到模擬器上獲取他的句柄
?使用win32gui中FindWindow這個函數,分別把spy++得到的類名和標題傳進去,就成功得到了他的句柄
import win32guiLEIDIAN = win32gui.FindWindow("LDPlayerMainFrame", "雷電模擬器") # 類名,標題?然后調用ShowWindow(句柄,win32con.SW_SHOW)函數來把模擬器窗口顯示在上方
用SetWindowPos函數調整窗口的位置大小,函數用法百度一下
import win32con# 顯示窗口 win32gui.ShowWindow(LEIDIAN, win32con.SW_SHOW) win32gui.SetWindowPos(LEIDIAN, win32con.HWND_TOPMOST, -1930, 0, 700, 1040, win32con.SWP_SHOWWINDOW) # 調整應用位置?鼠標模擬點擊用pyautogui.click函數
from PyQt5.QtWidgets import QApplicationpyautogui.click(-1771, 902, clicks=1, button="left") #(x,y,點擊次數,點哪個鍵)獲取屏幕上坐標我用這個軟件,用法非常簡單并且還可以識別像素顏色桌面坐標獲取工具【易語言開源】下載-桌面坐標獲取工具【易語言開源】v1.0免費版下載 - 非凡軟件站桌面坐標獲取工具【易語言開源】能夠對鼠標的位置坐標進行獲取,軟件操作簡單,即使是沒有電腦操作經驗的用戶也能夠快速上手使用,通過該軟件用戶可以一鍵復制坐標,同時支持快捷鍵操作,非常的實用,如果你是平面設計師需要用到坐標獲取,那么這款軟件再合適不過了!https://www.crsky.com/soft/238509.html#down對模擬器進行截圖并保存(網上找來的方法)
from PIL import Image from PyQt5.QtWidgets import QApplication import sysapp = QApplication(sys.argv) screen = QApplication.primaryScreen() img = screen.grabWindow(LEIDIAN).toImage() # LEIDIAN是我句柄的變量名 img.save("screenshot.jpg")?下一步就到怎么識別抽卡顏色了,這里比較麻煩,我的方法是識別截圖中這些坐標的顏色
?
?這也是網上找來的,用途是傳進x,y的坐標然后將他的RGB顏色轉為一個元組返回
截圖的像素坐標為我是右鍵這個截圖,點編輯,里面左下角可以看到你指針所在的圖像中的坐標
from PIL import Imagedef getPngPix1(x, y, pngPath="screenshot.jpg"):img_src = Image.open(pngPath)img_src = img_src.convert('RGBA')img_array = img_src.load()data = img_array[x, y]img_src.close()return data?下一步是根據像素顏色識別抽卡顏色
o = 0 b = 0 c = 0 def shaka(a):global o, b, c if a[0] > 60 and a[0] < 95: # 元組中第一個元素在這個區間中為藍色o += 1elif a[0] > 95 and a[0] < 150: # 紫色b += 1else: # 金色c += 1return o, b, cshaka(getPngPix1(324, 113)) # 把getPngpix1這個函數返回的元組傳進這個識別顏色的函數中最后只要加上循環和打印和金卡數量大于幾結束程序就好了,這是我的全部代碼,好多都是網上找的
import sys import win32con import time from PyQt5.QtWidgets import QApplication import win32gui import pyautogui from PIL import Imagedef getPngPix1(x, y, pngPath="screenshot.jpg"):img_src = Image.open(pngPath)img_src = img_src.convert('RGBA')img_array = img_src.load()data = img_array[x, y]img_src.close()return datadef shaka(a):global o, b, cif a[0] > 60 and a[0] < 95:o += 1elif a[0] > 95 and a[0] < 150:b += 1else:c += 1return o, b, c# 找出窗體編號 LEIDIAN = win32gui.FindWindow("LDPlayerMainFrame", "雷電模擬器") # 類名,標題 # 隱藏窗體 # win32gui.ShowWindow(XHZMG, win32con.SW_HIDE) # time.sleep(1) # 顯示窗體 win32gui.ShowWindow(LEIDIAN, win32con.SW_SHOW) win32gui.SetWindowPos(LEIDIAN, win32con.HWND_TOPMOST, -1930, 0, 700, 1040, win32con.SWP_SHOWWINDOW) # 調整應用位置app = QApplication(sys.argv) screen = QApplication.primaryScreen() o = 0 b = 0 c = 0 e = 0 for i in range(1000):o = 0b = 0c = 0pyautogui.click(-1771, 902, clicks=1, button="left")time.sleep(1.5)img = screen.grabWindow(LEIDIAN).toImage()img.save("screenshot.jpg")# 上面是截屏雷電模擬器shaka(getPngPix1(324, 113))# print(getPngPix1(324, 113))shaka(getPngPix1(475, 113))# print(getPngPix1(475, 113))shaka(getPngPix1(616, 261))# print(getPngPix1(616, 261))shaka(getPngPix1(616, 498))# print(getPngPix1(616, 498))shaka(getPngPix1(476, 647))# print(getPngPix1(476, 647))shaka(getPngPix1(325, 646))# print(getPngPix1(325, 646))shaka(getPngPix1(187, 494))# print(getPngPix1(187, 494))shaka(getPngPix1(189, 263))# print(getPngPix1(189, 263))shaka(getPngPix1(325, 383))# print(getPngPix1(325, 383))shaka(getPngPix1(475, 383))# print(getPngPix1(475, 383))e += 1print("藍卡%d,紫卡%d,金卡%d,本次執行了%d次" % (o, b, c, e))if c >= 4:exit()總結
以上是生活随笔為你收集整理的Python简单实现邂逅在迷宫无限十连自动抽卡并根据金卡数量停止程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关卡 动画 蓝图 运行_动画蓝图 - U
- 下一篇: python小学生课本剧_小学生都能学会