游戏辅助脚本(python)

摘要:
本文介绍如何用Python编写游戏辅助脚本。实现这一点的主要方法是通过比较图片在游戏中单击。PIL:图像处理模块的下载地址:https://www.lfd.uci.edu/~Gohlke/python-libs/pywin32https://blog.csdn.net/dcrmg/article/details/78233459?=-1:Hwnd=win32gui。FindWindow(0,a)win32gui。SetWindowPoshwnd=win32gui。FindWindow(0,a)size=win32gui。GetWindowRect#单击模拟器中的游戏图标,进入游戏win32api。SetCursorPoswin32api。鼠标事件win32api。mouse_事件时间。sleepreturnsizedefgame():“”“单击以在游戏中实现”“#单击我知道size=playGame()时间。sleeptopx,top=size[0],size[1]ImageGrab。grab Save#根据给定大小捕获游戏中的图片#使用图像哈希算法比较两张图片的识别hash_ size=6hash1=imagehash。average_hashhash2=图像哈希。average_Hasha=printifa˃0.6:#单击win32api。SetCursorPoswin32api。鼠标事件win32api。mouse_事件对于上述图像哈希算法https://blog.csdn.net/sinat_26917383/article/details/78582064?

本文介绍怎样用Python写游戏辅助脚本

主要实现方式是通过图片的对比,在游戏中就行点击。运行程序需要以下东西。

PIL: 图片处理模块     (python3 换成了 pillow)  下载地址: https://www.lfd.uci.edu/~gohlke/pythonlibs/

pywin32 :  用来模拟点击用的      pip   install   pypiwin32  

tesseract  :  实现图片文字识别             这里是安装教程   https://blog.csdn.net/dcrmg/article/details/78233459?locationNum=7&fps=1

#获取电脑上的窗口句柄
def
foo(hwnd,mouse): if IsWindow(hwnd) and IsWindowEnabled(hwnd) and IsWindowVisible(hwnd): titles.add(GetWindowText(hwnd))
# 下面这段代码实现  查找模拟器并并根据设置的坐标使游戏界面在指定位置打开
def
playGame(): """Click the game icon in the simulator to enter and displays to the specified location""" EnumWindows(foo, 0) list = [] for title in titles: if title: list.append(title) for title in list: a = '夜神模拟器' if title.find(a) != -1: hwnd = win32gui.FindWindow(0,a) win32gui.SetWindowPos(hwnd, win32con.HWND_TOP, 0, 0, 640, 360, win32con.SWP_SHOWWINDOW) hwnd = win32gui.FindWindow(0,a) size = win32gui.GetWindowRect(hwnd) # 在模拟器点击游戏图标进入游戏 win32api.SetCursorPos([size[0] + 410, size[1] + 186]) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0) time.sleep(10) return size
def game():
    """Click to implement in the game"""

    # 点击我知道
    size = playGame()
    time.sleep(15)
    topx, topy = size[0], size[1]
    ImageGrab.grab((topx + 287, topy + 307, topx + 350, topy + 330)).save('D: ceshi.jpg') # 根据给定尺寸在游戏中截取图片
# 利用图片hash算法对比两张图片的相识度 hash_size
= 6 hash1 = imagehash.average_hash(Image.open('D: ceshi.jpg'), hash_size=hash_size) hash2 = imagehash.average_hash(Image.open('D:我知道了.jpg'), hash_size=hash_size) a = (1 - (hash1 - hash2) / len(hash1.hash) ** 2) print(a) if a > 0.6:
# 操作鼠标点击 win32api.SetCursorPos([topx
+ 290, topy + 310]) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0)

对于上方的图片哈希算法   https://blog.csdn.net/sinat_26917383/article/details/78582064?locationNum=8&fps=1这种相对来说准确率不高,后面会根据识别图片上的文字来进行匹配。

现在给出完整代码(仅供参考)

import win32gui
import win32api
import win32con
from win32gui import *
import time

from PIL import Image
from PIL import ImageGrab
import imagehash
import pymouse,pykeyboard,os,sys
from pymouse import *
from pykeyboard import PyKeyboard
m = PyMouse()
k = PyKeyboard()
titles = set()


def foo(hwnd,mouse):
    if IsWindow(hwnd) and IsWindowEnabled(hwnd) and IsWindowVisible(hwnd):
        titles.add(GetWindowText(hwnd))



def playGame():
    """Click the game icon in the simulator to enter and displays to the specified location"""
    EnumWindows(foo, 0)
    list = []
    for title in titles:
        if title:
           list.append(title)
    for title in list:
        a = '夜神模拟器'
        if title.find(a) != -1:
            hwnd = win32gui.FindWindow(0,a)
            win32gui.SetWindowPos(hwnd, win32con.HWND_TOP, 0, 0, 640, 360, win32con.SWP_SHOWWINDOW)
            hwnd = win32gui.FindWindow(0,a)
            size = win32gui.GetWindowRect(hwnd)
            # 在模拟器点击游戏图标进入游戏
            win32api.SetCursorPos([size[0] + 410, size[1] + 186])
            win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0)
            win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0)
            time.sleep(10)
            return size


def game():
    """Click to implement in the game"""

    # 点击我知道
    size = playGame()
    time.sleep(15)
    topx, topy = size[0], size[1]
    ImageGrab.grab((topx + 287, topy + 307, topx + 350, topy + 330)).save('D: ceshi.jpg')
    hash_size = 6
    hash1 = imagehash.average_hash(Image.open('D: ceshi.jpg'), hash_size=hash_size)
    hash2 = imagehash.average_hash(Image.open('D:我知道了.jpg'), hash_size=hash_size)
    a = (1 - (hash1 - hash2) / len(hash1.hash) ** 2)
    print(a)
    if a > 0.6:
        win32api.SetCursorPos([topx + 290, topy + 310])
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0)
        win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0)
if __name__ == '__main__':
game()

上述只是点击了一处更多实现请自行解决(没搞过这个懂  希望给出更好的方法  我好学习学习)

免责声明:文章转载自《游戏辅助脚本(python)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WIN SERVER 2012 自启动tomcatJIRA的使用介绍(三)- Xray下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python被游标坑了

为了方便,这次就不单独写脚本了,直接一步一步执行下来就好了先说下游标,就是一个指针,比如我有1234每条占一行,那么初始游标默认是在1的位置,当read(1)后,游标自动向下next,现在指在2的位置,依次类推,然后是3,4直到最后,除非强制移动游标,否则游标不会再返回的今天写了一个脚本,具体就是有两个txt,a.txt和b.txt,从a.txt里面取值,...

python正则表达式匹配中文日期时间

今天分享一个Python正则表达式匹配日期与时间的方法,因为最近在做的项目需要从字符串里面把日期时间提取出来。 不多说,直接上代码: import re from datetime import datetime #python正则表达式匹配中文日期时间 test_date = '他的生日是2016-12-12 14:34,是个可爱的小宝贝.二宝的生日...

Python 的音乐库

前言 其实处理这个用 Matlab 最方便,之前把 guitar-synthesizer 从 Matlab 移植到 Python,过程中更是体会到了这一点。不过 Matlab 安装包又大,启动又慢,还是收费软件。。平常也不怎么用得到,毕竟我也不搞算法、仿真。 所以还是,Python 真香hhh 库 音乐的时域处理 标准库有个 wave 模块,可以转成 w...

Python中使用中文

这个问题曾在我初学Python的时候令我头疼不已,尤其是目前我们因为各种包的原因还只能使用2.x的版本。在3.x中字符编码已经统一用Unicode了。 Python 默认支持的是ASCII字符,包含了英文字母大小写以及标点符号,用一枚字节表示。中文则使用两枚字节表示。 没兴趣的同学可以绕过这段… 有人可能要问了,我擦,为神马以前说一个汉字的精度越高字节越多...

python 获取图片并自动命名保存

# -* - coding: UTF-8 -* -#导入第三方库import urllibfrom bs4 import BeautifulSoupimport requestsimport osimport timeimport random# 获取文件夹,如果文件夹不存在则创建新文件夹if os.path.isdir('E://biaoqing//')...

python中的str()与eval函数

author:headsen chen date:2018-04-09 10:48:22 eval函数是把str转化成list、dict、tuple str函数把list,dict,tuple转为为字符串 ----------------------------------------------------------------# 字符串转换成列表a...