日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python简单实现邂逅在迷宫无限十连自动抽卡并根据金卡数量停止程序

發(fā)布時(shí)間:2023/12/20 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python简单实现邂逅在迷宫无限十连自动抽卡并根据金卡数量停止程序 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

步驟:

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)到模擬器上獲取他的句柄

?使用win32guiFindWindow這個(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。