Python简单实现邂逅在迷宫无限十连自动抽卡并根据金卡数量停止程序
步驟:
1.找到手機(jī)模擬器的句柄
2.設(shè)置模擬器窗口位置和大小
3.鼠標(biāo)模擬點(diǎn)擊抽卡位置
4.對(duì)模擬器進(jìn)行截圖
5.識(shí)別截圖中藍(lán)卡 紫卡 金卡數(shù)量
因?yàn)槭亲约簩懼?#xff0c;變量名很隨意
首先是找到模擬器的句柄,有了句柄才能操作這個(gè)窗口位置大小。這里我用的spy++這個(gè)軟件
?
?把這個(gè)標(biāo)移動(dòng)到模擬器上獲取他的句柄
?使用win32gui中FindWindow這個(gè)函數(shù),分別把spy++得到的類名和標(biāo)題傳進(jìn)去,就成功得到了他的句柄
import win32guiLEIDIAN = win32gui.FindWindow("LDPlayerMainFrame", "雷電模擬器") # 類名,標(biāo)題?然后調(diào)用ShowWindow(句柄,win32con.SW_SHOW)函數(shù)來把模擬器窗口顯示在上方
用SetWindowPos函數(shù)調(diào)整窗口的位置大小,函數(shù)用法百度一下
import win32con# 顯示窗口 win32gui.ShowWindow(LEIDIAN, win32con.SW_SHOW) win32gui.SetWindowPos(LEIDIAN, win32con.HWND_TOPMOST, -1930, 0, 700, 1040, win32con.SWP_SHOWWINDOW) # 調(diào)整應(yīng)用位置?鼠標(biāo)模擬點(diǎn)擊用pyautogui.click函數(shù)
from PyQt5.QtWidgets import QApplicationpyautogui.click(-1771, 902, clicks=1, button="left") #(x,y,點(diǎn)擊次數(shù),點(diǎn)哪個(gè)鍵)獲取屏幕上坐標(biāo)我用這個(gè)軟件,用法非常簡單并且還可以識(shí)別像素顏色桌面坐標(biāo)獲取工具【易語言開源】下載-桌面坐標(biāo)獲取工具【易語言開源】v1.0免費(fèi)版下載 - 非凡軟件站桌面坐標(biāo)獲取工具【易語言開源】能夠?qū)κ髽?biāo)的位置坐標(biāo)進(jìn)行獲取,軟件操作簡單,即使是沒有電腦操作經(jīng)驗(yàn)的用戶也能夠快速上手使用,通過該軟件用戶可以一鍵復(fù)制坐標(biāo),同時(shí)支持快捷鍵操作,非常的實(shí)用,如果你是平面設(shè)計(jì)師需要用到坐標(biāo)獲取,那么這款軟件再合適不過了!https://www.crsky.com/soft/238509.html#down對(duì)模擬器進(jìn)行截圖并保存(網(wǎng)上找來的方法)
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")?下一步就到怎么識(shí)別抽卡顏色了,這里比較麻煩,我的方法是識(shí)別截圖中這些坐標(biāo)的顏色
?
?這也是網(wǎng)上找來的,用途是傳進(jìn)x,y的坐標(biāo)然后將他的RGB顏色轉(zhuǎn)為一個(gè)元組返回
截圖的像素坐標(biāo)為我是右鍵這個(gè)截圖,點(diǎn)編輯,里面左下角可以看到你指針?biāo)诘膱D像中的坐標(biāo)
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?下一步是根據(jù)像素顏色識(shí)別抽卡顏色
o = 0 b = 0 c = 0 def shaka(a):global o, b, c if a[0] > 60 and a[0] < 95: # 元組中第一個(gè)元素在這個(gè)區(qū)間中為藍(lán)色o += 1elif a[0] > 95 and a[0] < 150: # 紫色b += 1else: # 金色c += 1return o, b, cshaka(getPngPix1(324, 113)) # 把getPngpix1這個(gè)函數(shù)返回的元組傳進(jìn)這個(gè)識(shí)別顏色的函數(shù)中最后只要加上循環(huán)和打印和金卡數(shù)量大于幾結(jié)束程序就好了,這是我的全部代碼,好多都是網(wǎng)上找的
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# 找出窗體編號(hào) LEIDIAN = win32gui.FindWindow("LDPlayerMainFrame", "雷電模擬器") # 類名,標(biāo)題 # 隱藏窗體 # 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) # 調(diào)整應(yīng)用位置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("藍(lán)卡%d,紫卡%d,金卡%d,本次執(zhí)行了%d次" % (o, b, c, e))if c >= 4:exit()總結(jié)
以上是生活随笔為你收集整理的Python简单实现邂逅在迷宫无限十连自动抽卡并根据金卡数量停止程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关卡 动画 蓝图 运行_动画蓝图 - U
- 下一篇: python小学生课本剧_小学生都能学会