步骤:

1.找到手机模拟器的句柄

2.设置模拟器窗口位置和大小

3.鼠标模拟点击抽卡位置

4.对模拟器进行截图

5.识别截图中蓝卡 紫卡 金卡数量

因为是自己写着用,变量名很随意

首先是找到模拟器的句柄,有了句柄才能操作这个窗口位置大小。这里我用的spy++这个软件

把这个标移动到模拟器上获取他的句柄

使用win32guiFindWindow这个函数,分别把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简单实现邂逅在迷宫无限十连自动抽卡并根据金卡数量停止程序相关推荐

  1. 利用Python实现阴阳师自动抽卡

    Linux编程 点击右侧关注,免费入门到精通! 作者丨Meowcolm024 https://www.jianshu.com/p/b45416bed86f 前言 现在版本官方已经有了自动御魂.觉醒和探 ...

  2. python抽卡游戏,利用Python实现阴阳师自动抽卡,SSR手到擒来,开始爆肝!

    前言 现在版本官方已经有了自动御魂.觉醒和探索的脚本了. 既然是这样那不如就搞一个抽卡的脚本好了,这样大佬(土豪,欧皇)们 几百连抽就不用画符,和点SSR点到手软了XD. (Ps:过年了,祝大家SSR ...

  3. 利用Python实现阴阳师自动抽卡,SSR手到擒来,开始爆肝!

    前言 现在版本官方已经有了自动御魂.觉醒和探索的脚本了. 既然是这样那不如就搞一个抽卡的脚本好了,这样大佬(土豪,欧皇)们 几百连抽就不用画符,和点SSR点到手软了XD. (Ps:过年了,祝大家SSR ...

  4. 简单几步实现钉钉多次自动打卡

    需要准备一台可以联网的备用机,下载钉钉和FV悬浮球,确保钉钉打卡可以使用极速打卡. 参考以下链接设置FV悬浮球和钉钉: 如何利用fooview实现钉钉自动打卡_北桃的梦的博客-CSDN博客_foovi ...

  5. 十二、Python简单数据结构应用(之…

    十.Python语言中简单数据结构的应用(之二) ----From a high school student's view to learn Python 关键字: python 列表 堆栈 数据结 ...

  6. 别再说Python简单!

    之前在知乎上看到这样一条动态: 这位乎友觉得,只要是高考600分以上的人,一天之内必然学会Python. 我很惊讶,就算再简单的语言,一天学会,是不是太梦幻. 他说Python简单? 不知道各位有没有 ...

  7. python 组合数字和字符_python无限生成不重复(字母,数字,字符)组合的方法

    python无限生成不重复(字母,数字,字符)组合的方法 使用python自带的itertools模块 调用其product函数 传入我们想组合生成的字符数据 便会源源不断的生成组合 而且不会重复 r ...

  8. 用Python简单模拟《原神》抽卡系统

    用Python简单模拟<原神>抽卡系统[抽卡模拟器] 简介 代码思想 保底机制 概率 概率公式 代码构建 导入软件包random和os 初始化概率 增加概率 保底机制 创建文件夹 抽卡次数 ...

  9. Python简单实现数据降噪滤波处理_滢泷版

    Python简单实现数据降噪.滤波处理_滢泷版 由于项目需要对数据进行降噪滤波处理,又要尽可能保证变化特征不失真. 我在网上搜索了一下Python的方库,没找到. 我安装了scipy 之后找不到spl ...

最新文章

  1. 程序员单身比例有多高?【2019开发者图鉴】告诉你
  2. NoSQL 数据库系统对比
  3. Swift3.0语言教程字符串与URL的数据转换与自由转换
  4. jstat_使用jstat报告自定义JVM指标集
  5. 更新无限无线连接更新服务器,02-H3C WBC560多业务无线控制器软件升级操作指导...
  6. 3-5:类与对象中篇——默认成员函数之运算符重载
  7. (11)System Verilog对象复制
  8. 内核并发控制---读写自旋锁 (来自网易)
  9. amap vueamap 与_vue中使用vue-amap(高德地图)
  10. [PHP] 网络与协议
  11. ajax将数据显示在class为content的标签中_python爬取微博评论(无重复数据)
  12. 62. Using Default Magento Cache
  13. Linux下制作虚拟软盘镜像
  14. 面试题:用两个队列实现一个栈
  15. S3接口访问华为云OBS
  16. Hulu机器学习问题与解答系列 | 二十九:WGANs:抓住低维的幽灵
  17. Java+MySql存储表情符
  18. 【原创干货】6000字、22个案例详解Pandas数据分析/预处理时的实用技巧,超简单...
  19. 搭建多节点Linux环境
  20. MySQL高级:索引优化之防止索引失效

热门文章

  1. cve 漏洞编号 申请流程
  2. macbook air完美使用wtg外接硬盘运行win8系统
  3. python while循环求和_Python基础——for/while循环
  4. 户外活动---英语单词
  5. 招商管理、智慧招商、精准招商、地图招商、crm系统、企业画像、拜访跟进、销售简报、营销触达、坐席外呼、短信、签名、公海、客户、合同、业绩、员工、权限管理、角色、部门、费用、消息、交接、axure原型
  6. 股票、期货、数字货币量化分析
  7. @spring.active@无法读取
  8. 【项目源码】智慧班牌源码 家校互联小程序源码 智慧校园云平台
  9. 小程序反编译 g is not defined_【美剧笔记24】小谢尔顿 S2E1啦啦啦,我是卖报的小行家...
  10. 基于51单片机的蓝牙遥控小车计划