感谢https://www.cnblogs.com/eatPython/p/5958850.html这位大佬提供的接口函数

感谢http://www.360doc.com/content/18/0121/22/1513309_723986820.shtml这位大佬提供的截图

其实只要理顺原理,自己并没有多少自己的代码,基本都是摘抄别人的,拼凑而成

1、首先导入需要用到的库文件

import time
import win32gui, win32ui, win32con, win32api
from ctypes import *
import cv2
import numpy as np
import random

2、其次是定义鼠标的一些动作,代码出自本文提到的第一个大佬

def clickLeftCur():#单击win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN|win32con.MOUSEEVENTF_LEFTUP, 0, 0)def moveCurPos(x,y):#移动鼠标windll.user32.SetCursorPos(x, y)def getCurPos():#获得鼠标位置信息,这个再实际代码没用上,调试用得上return win32gui.GetCursorPos()

3,、截图代码出自第二位大佬

def window_capture(filename):hwnd = 0  # 窗口的编号,0号表示当前活跃窗口# 根据窗口句柄获取窗口的设备上下文DC(Divice Context)hwndDC = win32gui.GetWindowDC(hwnd)# 根据窗口的DC获取mfcDCmfcDC = win32ui.CreateDCFromHandle(hwndDC)# mfcDC创建可兼容的DCsaveDC = mfcDC.CreateCompatibleDC()# 创建bigmap准备保存图片saveBitMap = win32ui.CreateBitmap()# 获取监控器信息MoniterDev = win32api.EnumDisplayMonitors(None, None)w = MoniterDev[0][2][2]h = MoniterDev[0][2][3]# print w,h   #图片大小# 为bitmap开辟空间saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)# 高度saveDC,将截图保存到saveBitmap中saveDC.SelectObject(saveBitMap)# 截取从左上角(0,0)长宽为(w,h)的图片saveDC.BitBlt((0, 0), (w, h), mfcDC, (0, 0), win32con.SRCCOPY)saveBitMap.SaveBitmapFile(saveDC, filename)

4、运行代码

filename = "blackground.jpg"#储存的文件名
while True:time.sleep(2)#设置隔2秒运行一次#截图window_capture(filename)#对整个屏幕截图,并保存截图为filename#原图srcImg = cv2.imread(filename)#读取filename的截图文件,这里应该是可以对截图函数进行修改,不用产生中间的文件,截图直接与ndarray形式存在begin = cv2.imread('begin.png')#读取点击开始战斗的 标准图像end1 = cv2.imread('end1.png')#结束之后点击屏幕任意位置,开宝箱end2 = cv2.imread('end2.png')#开完宝箱后,点击任意结束本轮
    #用了一个最简答的图像相见的方式来完成以下动作,具体图示往下翻begin_meanValue = np.mean(srcImg[729:786,1275:1447,:] - begin)#检测截图是否包含开始战斗end1_meanValue = np.mean(srcImg[228:350,774:940,:] - end1)#检测战斗是否结束end2_meanValue = np.mean(srcImg[570:786,847:1083,:] - end2)#检测最后的界面#print(begin)if begin_meanValue < 50:#界面运行到由战斗开始就点击战斗开始move_x = random.randint(1290,1430)#设计随机点击坐标点,防止被检测,虽然不知道有没效果,初衷设置如此move_y = random.randint(745,770)moveCurPos(move_x,move_y)clickLeftCur()if end1_meanValue < 50 or end2_meanValue < 50:#检测开宝箱和结束move_x = random.randint(1195,11563)move_y = random.randint(651,832)moveCurPos(move_x,move_y)clickLeftCur()

5、如图两图,首先从大图截出开始战斗区域当做标准图像,并记录图像位置的坐标,运行代码后,每个2秒截图,并取出这个位置的内容,跟标准凸图像做减法,若是在有战斗开始界面,,则他们的差值会很小,对这块区域求均值,设定一个小的阈值进行判断所含的内容是否合适。另外两个也是一样的原理

6、这种方式需要预先制作标准图像,换了电脑需要重新制。其实可以截图开始战斗区域,然后用opencv的函数进行图像匹配寻找该点击的区域,另外可以增加刷副本肝狗粮,御灵,觉醒之类。最好制作个图形界面。如果一部电脑刷开,只要增加两个窗口的点击位置就好啦

7、真的感慨python的强大,这里抄一段那里抄一段就可以完成自己所要的功能。技术交流,被封号别找我(手动戴墨镜)

阴阳师自动刷御魂python实现相关推荐

  1. python实现阴阳师自动刷御魂脚本_Python实现阴阳师电脑端自动组队刷御魂

    Python实现阴阳师电脑端自动组队刷御魂 1 开发环境搭建 Python3.7安装下载地址: https://www.python.org/ftp/python/3.7.0/python-3.7.0 ...

  2. python实现阴阳师自动刷御魂脚本_自己写的yys御魂python脚本

    [Python] 纯文本查看 复制代码print("正在加载库") import win32api import win32con import time import rando ...

  3. python实现阴阳师自动刷御魂脚本_用Python实现FGO自动战斗脚本

    我家黑贞! 1. 背景 Fate/Grand Order(非的肝不过欧的)作为索尼为了拯救自己不倒闭而开发的面向月厨的骗氪养成抽卡爆肝游戏,居然没有像隔壁<阴阳师>的自动战斗系统(看看别人 ...

  4. python能写什么脚本_如何用python编写一个阴阳师脚本(自动刷御魂,业原火)(2)...

    在上一篇文章里,我们已经安装好了python,安装好了所有需要的库,现在可以开始码代码了嗷 先让我们来分析一下需要实现的脚本功能,首先就是这个开始战斗此时队友还没来... 当队友(舍友)进来时,开始战 ...

  5. 阴阳师手游御魂怎么强化 御魂强化方法详解

     阴阳师手游御魂怎么强化?很多阴阳师手游中的新手玩家们根据游戏系统的指引知道御魂的玩法, 但是不知道在阴阳师手游中怎么强化御魂.下面小编就为玩家们带来御魂强化的详细方法步骤.    御魂强化方法步 ...

  6. 2020.12.10(阴阳师照妖镜和御魂跑分器)

    原文链接: 江湖上失传已久的照妖镜和御魂跑分器,今天正式开源 - 自学编程的大好机会 作者:kiino 江湖上失传已久的照妖镜和御魂跑分器,今天正式开源 - 自学编程的大好机会 2020-04-28 ...

  7. python简易程序教程_Python-自制简易程序挂机刷御魂

    降智警告:本人为编程新手,遵守面向CSDN编程原则,代码架构具有个人特色,仅供参考 前言:因为阴阳师的樱饼快用完了,就随手写了个脚本,最后也包装成了exe,效果不错但是经常在关闭的时候崩溃 一.功能 ...

  8. 用python编写阴阳师自动刷图脚本

    import pyautogui as sb #鼠标 import random import time# random.uniform 随机小数 def move(s,inta,intb,intc, ...

  9. P4343 [SHOI2015]自动刷题机 Python(二分答案)

    在这吐槽一下洛谷的OJ,对Python不是很友好,一样的思路实现下来大部分数据会TLE,需要不断的优化复杂度  :( 题目地址:[SHOI2015]自动刷题机 - 洛谷 优化不下去了,对比了一下Pyt ...

最新文章

  1. 记录自己的学习和经验
  2. 浅谈协同过滤推荐算法
  3. 2021中国新消费品牌社媒营销研究报告
  4. RTSP客户端接收存储数据(live555库中的openRTSP实例)
  5. NLP简报(Issue #3)
  6. 将两个文件的路径作为参数传递给脚本_将Docker与pipeline一起使用
  7. 图像局部特征(九)--斑点检测LOG算子
  8. List的ToLookup 分组方法
  9. vim安装airline
  10. 素数表(Prime number table)
  11. win10 安装pytorch gpu 及 解决报错“OSError: [WinError 126] 找不到指定的模块
  12. mysql命令报错-bash: mysql: command not found
  13. se服务器系统,使用CloneZilla服务器版克隆Linux系统(CloneZilla SE)
  14. 告赢了!程序员拒绝春节带电脑回家工作被开除,判决获赔19.4万!
  15. python读取 xls,xlsx,csv,doc,docx,pdf 格式的文件
  16. .Net 微信开发与微信支付
  17. lol进服务器时文件损坏,LOL文件损坏怎么修复
  18. java程序员从笨鸟到菜鸟_Java程序员从笨鸟到菜鸟之(十四)Html基础积累总结(上)...
  19. getline() 把我弄得真捉急,菜鸟表示很无力
  20. 微信接口开发申请服务器,开发微信服务器接口的实例教程

热门文章

  1. Windows虚拟内存如何设置
  2. 虚拟机虚拟网卡未识别怎么办!!!
  3. 【C++】带你发掘swap函数的秘密
  4. HTML中简单的form元素及属性:
  5. 第三章、空域滤波(空域滤波基础)
  6. 修改linux中mysql密码,Linux下修改Mysql密码的三种方法
  7. 【CDH】该主机与 Cloudera Manager Server 失去联系的时间过长。该主机未与 Host Monitor 建立联系。
  8. java_web:使用javabean实现登录操作(封装业务逻辑的javabean,且使用封装数据的实体类传参)
  9. [山东科技大学OJ]2301 Problem G: 车牌限行
  10. drools规则引擎耗费内存问题解决