Python:看我如何全程自动玩游戏带你飞,直接无敌

Python游戏开发,pyautogui模块,Python自动玩“别再踩白块了“小游戏 前言 利用Python自动玩"别再踩白块了"这个小游戏,让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: numpy模块; cv2模块; pyautogui模块; pyscreenshot模块; 以及一些Python自带的模块。 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可。最后,如果你的时间不是很紧张,并且又想快速的python提高,最重要的是不怕吃苦,建议你可以价位@762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去 阅读详情

前言

最近我小表妹迷上了玩连连看,玩了一个星期了还没通关,真的是菜。

我实在是看不过去了,直接用python写了个脚本代码,一分钟一把游戏。

快是快,就是联网玩容易被骂,嘿嘿~ 但是,又不是我玩,有什么关系呢~ 哈哈哈 😎

代码

导入所需模块

# -*- coding:utf-8 -*-
import cv2
import numpy as np
import win32api
import win32gui
import win32con
from PIL import ImageGrab
import time
import random
# 窗体标题  用于定位游戏窗体
WINDOW_TITLE = "连连看"
# 时间间隔随机生成 [MIN,MAX]
TIME_INTERVAL_MAX = 0.06
TIME_INTERVAL_MIN = 0.1
# 游戏区域距离顶点的x偏移
MARGIN_LEFT = 10
# 游戏区域距离顶点的y偏移
MARGIN_HEIGHT = 180
# 横向的方块数量
H_NUM = 19
# 纵向的方块数量
V_NUM = 11
# 方块宽度
POINT_WIDTH = 31
# 方块高度
POINT_HEIGHT = 35
# 空图像编号
EMPTY_ID = 0
# 切片处理时候的左上、右下坐标:
SUB_LT_X = 8
SUB_LT_Y = 8
SUB_RB_X = 27
SUB_RB_Y = 27
# 游戏的最多消除次数
MAX_ROUND = 200

所需素材在下方或者主页左侧扫码获取

def getGameWindow():
    # FindWindow(lpClassName=None, lpWindowName=None)  窗口类名 窗口标题名
    window = win32gui.FindWindow(None, WINDOW_TITLE)

    # 没有定位到游戏窗体
    while not window:
        print('Failed to locate the game window , reposition the game window after 10 seconds...')
        time.sleep(10)
        window = win32gui.FindWindow(None, WINDOW_TITLE)

    # 定位到游戏窗体
    # 置顶游戏窗口
    win32gui.SetForegroundWindow(window)
    pos = win32gui.GetWindowRect(window)
    print("Game windows at " + str(pos))
    return (pos[0], pos[1])

def getScreenImage():
    print('Shot screen...')
    # 获取屏幕截图 Image类型对象
    scim = ImageGrab.grab()
    scim.save('screen.png')
    # 用opencv读取屏幕截图
    # 获取ndarray
    return cv2.imread("screen.png")

def getAllSquare(screen_image, game_pos):
    print('Processing pictures...')
    # 通过游戏窗体定位
    # 加上偏移量获取游戏区域
    game_x = game_pos[0] + MARGIN_LEFT
    game_y = game_pos[1] + MARGIN_HEIGHT

    # 从游戏区域左上开始
    # 把图像按照具体大小切割成相同的小块
    # 切割标准是按照小块的横纵坐标
    all_square = []
    for x in range(0, H_NUM):
        for y in range(0, V_NUM):
            # ndarray的切片方法 : [纵坐标起始位置:纵坐标结束为止,横坐标起始位置:横坐标结束位置]
            square = screen_image[game_y + y * POINT_HEIGHT:game_y + (y + 1) * POINT_HEIGHT,
                     game_x + x * POINT_WIDTH:game_x + (x + 1) * POINT_WIDTH]
            all_square.append(square)

    # 因为有些图片的边缘会造成干扰,所以统一把图片往内缩小一圈
    # 对所有的方块进行处理 ,去掉边缘一圈后返回
    finalresult = []
    for square in all_square:
        s = square[SUB_LT_Y:SUB_RB_Y, SUB_LT_X:SUB_RB_X]
        finalresult.append(s)
    return finalresult


# 判断列表中是否存在相同图形
# 存在返回进行判断图片所在的id
# 否则返回-1
def isImageExist(img, img_list):
    i = 0
    for existed_img in img_list:
        # 两个图片进行比较 返回的是两个图片的标准差
        b = np.subtract(existed_img, img)
        # 若标准差全为0 即两张图片没有区别
        if not np.any(b):
            return i
        i = i + 1
    return -1

def getAllSquareTypes(all_square):
    print("Init pictures types...")
    types = []
    # number列表用来记录每个id的出现次数
    number = []
    # 当前出现次数最多的方块
    # 这里我们默认出现最多的方块应该是空白块
    nowid = 0;
    for square in all_square:
        nid = isImageExist(square, types)
        # 如果这个图像不存在则插入列表
        if nid == -1:
            types.append(square)
            number.append(1);
        else:
            # 若这个图像存在则给计数器 + 1
            number[nid] = number[nid] + 1
            if (number[nid] > number[nowid]):
                nowid = nid
    # 更新EMPTY_ID
    # 即判断在当前这张图中的空白块id
    global EMPTY_ID
    EMPTY_ID = nowid
    print('EMPTY_ID = ' + str(EMPTY_ID))
    return types


# 将二维图片矩阵转换为二维数字矩阵
# 注意因为在上面对截屏切片时是以列为优先切片的
# 所以生成的record二维矩阵每行存放的其实是游戏屏幕中每列的编号
# 换个说法就是record其实是游戏屏幕中心对称后的列表
def getAllSquareRecord(all_square_list, types):
    print("Change map...")
    record = []
    line = []
    for square in all_square_list:
        num = 0
        for type in types:
            res = cv2.subtract(square, type)
            if not np.any(res):
                line.append(num)
                break
            num += 1
        # 每列的数量为V_NUM
        # 那么当当前的line列表中存在V_NUM个方块时我们认为本列处理完毕
        if len(line) == V_NUM:
            print(line);
            record.append(line)
            line = []
    return record

def canConnect(x1, y1, x2, y2, r):
    result = r[:]

    # 如果两个图像中有一个为0 直接返回False
    if result[x1][y1] == EMPTY_ID or result[x2][y2] == EMPTY_ID:
        return False
    if x1 == x2 and y1 == y2:
        return False
    if result[x1][y1] != result[x2][y2]:
        return False
    # 判断横向连通
    if horizontalCheck(x1, y1, x2, y2, result):
        return True
    # 判断纵向连通
    if verticalCheck(x1, y1, x2, y2, result):
        return True
    # 判断一个拐点可连通
    if turnOnceCheck(x1, y1, x2, y2, result):
        return True
    # 判断两个拐点可连通
    if turnTwiceCheck(x1, y1, x2, y2, result):
        return True
    # 不可联通返回False
    return False

def horizontalCheck(x1, y1, x2, y2, result):
    if x1 == x2 and y1 == y2:
        return False
    if x1 != x2:
        return False
    startY = min(y1, y2)
    endY = max(y1, y2)
    # 判断两个方块是否相邻
    if (endY - startY) == 1:
        return True
    # 判断两个方块通路上是否都是0,有一个不是,就说明不能联通,返回false
    for i in range(startY + 1, endY):
        if result[x1][i] != EMPTY_ID:
            return False
    return True

def verticalCheck(x1, y1, x2, y2, result):
    if x1 == x2 and y1 == y2:
        return False

    if y1 != y2:
        return False
    startX = min(x1, x2)
    endX = max(x1, x2)
    # 判断两个方块是否相邻
    if (endX - startX) == 1:
        return True
    # 判断两方块儿通路上是否可连。
    for i in range(startX + 1, endX):
        if result[i][y1] != EMPTY_ID:
            return False
    return True


def turnOnceCheck(x1, y1, x2, y2, result):
    if x1 == x2 or y1 == y2:
        return False

    cx = x1
    cy = y2
    dx = x2
    dy = y1
    # 拐点为空,从第一个点到拐点并且从拐点到第二个点可通,则整条路可通。
    if result[cx][cy] == EMPTY_ID:
        if horizontalCheck(x1, y1, cx, cy, result) and verticalCheck(cx, cy, x2, y2, result):
            return True
    if result[dx][dy] == EMPTY_ID:
        if verticalCheck(x1, y1, dx, dy, result) and horizontalCheck(dx, dy, x2, y2, result):
            return True
    return False


def turnTwiceCheck(x1, y1, x2, y2, result):
    if x1 == x2 and y1 == y2:
        return False

    # 遍历整个数组找合适的拐点
    for i in range(0, len(result)):
        for j in range(0, len(result[1])):
            # 不为空不能作为拐点
            if result[i][j] != EMPTY_ID:
                continue
            # 不和被选方块在同一行列的不能作为拐点
            if i != x1 and i != x2 and j != y1 and j != y2:
                continue
            # 作为交点的方块不能作为拐点
            if (i == x1 and j == y2) or (i == x2 and j == y1):
                continue
            if turnOnceCheck(x1, y1, i, j, result) and (
                    horizontalCheck(i, j, x2, y2, result) or verticalCheck(i, j, x2, y2, result)):
                return True
            if turnOnceCheck(i, j, x2, y2, result) and (
                    horizontalCheck(x1, y1, i, j, result) or verticalCheck(x1, y1, i, j, result)):
                return True
    return False


def autoRelease(result, game_x, game_y):
    # 遍历地图
    for i in range(0, len(result)):
        for j in range(0, len(result[0])):
            # 当前位置非空
            if result[i][j] != EMPTY_ID:
                # 再次遍历地图 寻找另一个满足条件的图片
                for m in range(0, len(result)):
                    for n in range(0, len(result[0])):
                        if result[m][n] != EMPTY_ID:
                            # 若可以执行消除
                            if canConnect(i, j, m, n, result):
                                # 消除的两个位置设置为空
                                result[i][j] = EMPTY_ID
                                result[m][n] = EMPTY_ID
                                print('Remove :' + str(i + 1) + ',' + str(j + 1) + ' and ' + str(m + 1) + ',' + str(
                                    n + 1))

                                # 计算当前两个位置的图片在游戏中应该存在的位置
                                x1 = game_x + j * POINT_WIDTH
                                y1 = game_y + i * POINT_HEIGHT
                                x2 = game_x + n * POINT_WIDTH
                                y2 = game_y + m * POINT_HEIGHT

                                # 模拟鼠标点击第一个图片所在的位置
                                win32api.SetCursorPos((x1 + 15, y1 + 18))
                                win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x1 + 15, y1 + 18, 0, 0)
                                win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x1 + 15, y1 + 18, 0, 0)

                                # 等待随机时间 ,防止检测
                                time.sleep(random.uniform(TIME_INTERVAL_MIN, TIME_INTERVAL_MAX))

                                # 模拟鼠标点击第二个图片所在的位置
                                win32api.SetCursorPos((x2 + 15, y2 + 18))
                                win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x2 + 15, y2 + 18, 0, 0)
                                win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x2 + 15, y2 + 18, 0, 0)
                                time.sleep(random.uniform(TIME_INTERVAL_MIN, TIME_INTERVAL_MAX))
                                # 执行消除后返回True
                                return True
    return False


def autoRemove(squares, game_pos):
    game_x = game_pos[0] + MARGIN_LEFT
    game_y = game_pos[1] + MARGIN_HEIGHT
    # 重复一次消除直到到达最多消除次数
    while True:
        if not autoRelease(squares, game_x, game_y):
            # 当不再有可消除的方块时结束 , 返回消除数量
            return


if __name__ == '__main__':
    random.seed()
    # i. 定位游戏窗体
    game_pos = getGameWindow()
    time.sleep(1)
    # ii. 获取屏幕截图
    screen_image = getScreenImage()
    # iii. 对截图切片,形成一张二维地图
    all_square_list = getAllSquare(screen_image, game_pos)
    # iv. 获取所有类型的图形,并编号
    types = getAllSquareTypes(all_square_list)
    # v. 讲获取的图片地图转换成数字矩阵
    result = np.transpose(getAllSquareRecord(all_square_list, types))
    # vi. 执行消除 , 并输出消除数量
    print('The total elimination amount is ' + str(autoRemove(result, game_pos)))

尾语

成功没有快车道,幸福没有高速路。

所有的成功,都来自不倦地努力和奔跑,所有的幸福都来自平凡的奋斗和坚持

——励志语录

本文章就写完啦~感兴趣的小伙伴可以复制代码去试试

你们的支持是我最大的动力!!记得三连哦~ 💕 欢迎大家阅读往期的文章呀

笔记:完善python selenium 讯飞写作的整体自动化 try:# 获取所有窗口句柄# 遍历窗口句柄,定位到最后一个打开的标签页driver.switch_to.window(handle) # 切换到当前循环的窗口# 此时已经位于最后一个标签页,可以执行相应操作print("当前页面的URL是:", driver.current_url)print(f"移动到最后一页,发生错误:{e}")# 等待页面加载完成# 等待反馈元素变得可交互# 或者使用By.CLASS_NAMEprint("出现了返回主页按键,可以工作了") 阅读详情

相关推荐

Python讯飞语音转文字保存到文件

因为有朋友需要将录音转成文字, 给我的是m4a格式, 我给转成txt发给他的. 我找了找, 发现网上很多都是收费软件,而且转换结果不尽人意., 最后决定使用讯飞服务来完成转换, 讯飞语音转写api支持大文件, 转换结果也十分准确, 感谢讯飞及制作demo的大佬yanmeng2, 嘻嘻 1先注册账号, 获取key… 在讯飞开放平台(https://passport.xfyun.cn/login)注册账号, 然后创建应用. 再去新用户送5小时转换时间, 需要去领取 (http://www.xfyun.cn/se

yynan555的博客 3487

使用python自动玩游戏

文章目录怎么玩?一、安装依赖二、使用步骤1.准备工作获取坐标工具类2.控制鼠标移动3.控制键盘输入3.控制鼠标点击4.键盘间隔5.延迟6.图片比对7.周末判断8.定时关机9.滑动鼠标轮10.键盘组合键11.创建定时任务总结 怎么玩? 通过python写出你想要的功能,这篇文件我主要讲述如何写,其中的一些功能点,只教方法。 一、安装依赖 1.下载python并配置环境变量,其他博文有详细,这里不细说。 2.下载编辑工具,我使用PyCharm,你们可以用其他的一样 3.命令行输出 pip install p

cyy9487的博客 4354

程序员用Python分析了20万场吃鸡数据,最后得出玩游戏要带妹

最近老板爱上了吃鸡(手游:全军出击),经常拉着我们开黑,只能放弃午休的时间,陪老板在沙漠里奔波。 上周在在微信游戏频道看战绩的时候突发奇想,是不是可以通过这个方式抓取到很多战斗数据,然后分析看看有什么规律。 小编是一名python开发工程师,群里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的...

weixin_45550143的博客 1435

如何用人工智能自动玩游戏

让AI玩游戏的思想早在上世纪就已经有了,那个时候更偏向棋类游戏。像是五子棋、象棋等。在上世纪“深蓝”就击败了国际象棋冠军,而到2016年“Alpha Go”击败了人类围棋冠军。到现在,AI涉略的不仅仅是棋类游戏。像是超级马里奥、王者荣耀这种游戏,AI也能有比较好的表现。今天我们就来用一个实际的例子讨论AI自动玩游戏这一话题,本文会用非常简单的机器学习算法让AI自动玩Google小恐龙游戏。

ZackSock的博客 5万+

Python版本讯飞语音“语音听写”Demo

语音听写,可以将60s以内的音频文件转换为文字 1.进入“讯飞开放平台”,创建“WebAPI”平台的应用 添加服务 把你的IP添加白名单,就可以进行测试了 Demo # -*- coding: utf-8 -*- import requests import time import hashlib import base64 import json URL = "h...

风达的专栏 9028

Pygame实战:Python开挂版无敌小恐龙【源码免费领】

导语 ​ ​ ​ ​ ​ ​ hi 大家好呀! 你们还记得? 很久很久以前, ...

顾木子吖的博客 5764

一个基于python的自动玩游戏辅助

业余时间我会玩一玩游戏,然而并不是所有所有的游戏内容都会让我一直保持着兴趣。一段时间后,懒癌就犯了…… 心血来潮,调研了几种基于屏幕色块识别来进行点击的实现方案。 不言而喻,Python在当下的互联网环境中也是名列前茅的大哥。 ...

子涵先生 9341

人工智能-CS188 Project 2: Multi-agents

一、项目介绍 项目介绍网页 项目代码下载 本项目是采用Berkeley的CS188课程内容实习二的内容,在这个项目中,我们将为经典版本的Pacman 设计自动算法,包括幽灵。在此过程中,我们将实现 minimax 和 expectimax 搜索并尝试评估函数设计 完成作业只需要完成5个题目,按照项目介绍的步骤进行完成,主要是在multiAgents.py文件中进行补充代码 二、代码详情 1、Question1:Reflex Agent 略 2、Question2:Minimax 套用ppt上的minm

xiten的博客 8285

Python自动玩游戏的三个练习项目

上一个指导项目,我们实现了自动识别游戏的当前布局,自动确定游戏的点击步骤,并实现的鼠标自动点击,准确快速地完成了游戏。解决问题的方法,就是通常专业术语所说的算法,一般都有确定的方法供选择。通常最少步骤类的游戏用的是宽度优先搜索。从上一个项目中可以知道,直接用宽度优先搜索,虽然可以解决问题,但是却显得计算机太笨了,还不如自己手工玩起来更快。这个时候,就需要采用分而治之的方式,虽然解决的步骤不是最优的,但是速度却是比人类要快太多了。分治的方法要适合计算机来解决,能想到合适的分治方法,也不是件容易的事。

2301_76161259的博客 556

【论文翻译】VIT:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

VIT摘要介绍相关工作模型VISION TRANSFORMER (VIT)微调和高分辨率实验结论 摘要 虽然Transformer架构在自然语言处理任务中已经成为事实标准,但是它在计算机视觉领域的应用仍然受限。在视觉领域,注意力要么和卷积网络结合使用,要么替换卷积网络中的某些部分,同时保持整体结构不变。本文表明对CNNs的依赖不是必要的,纯转换器(pure transformer)直接应用于图像块(image patches)序列在图像分类任务中能发挥很好的作用。当对大量数据进行预训练并把它转移到多个中型或

栗子菜菜 1846

Buck电路中自举电容串联小电阻的作用

在Buck电路中,自举电容(Cboot)驱动高边MOSFET时,因寄生电感和电容会形成LC谐振回路,导致SW节点高频振铃,引发EMI问题。串联小电阻(Rboot)可引入阻尼效应,抑制振铃、改善波形和EMI性能,但会略微增加开关损耗。设计时建议预留可调电阻位(2Ω~20Ω),根据实测结果平衡效率与系统稳定性,提升电源可靠性。这一措施是优化开关电源EMC的常见实践。

硬核科技 627

【Python脚本】得王者金币,王者大佬快来带我飞

小编作为王者的忠实粉丝,有时间就要开黑玩一把,记得刚开始玩王者,看朋友页面金币特别多,太心动了,很傻的问他,这些金币你可以送我吗?现在想想真丢脸,为了满足自己那时的欲望,就有了这次的脚本分享。 小编对王者是又菜又爱玩,希望有幸看见这篇博文的王者大佬可以来带带我这个小菜鸟,上分上分~ 一、环境配置 1、ADB工具(让电脑使用手机) 下载地址:https://adbshell.com/downloads/ 如果慢的话找其它资源也好 下载配置不再赘述了…最后出现类似下图即可。 2、python与IDE 下载配

yunyun云芸 1万+

无人驾驶汽车系统入门(三十二)——FEC算法:点云快速欧几里得聚类实战解析

本文深入解析了FEC算法在无人驾驶点云聚类中的高效应用,通过逐点处理策略和体素栅格预分割技术,实现了比传统欧几里得聚类快百倍的速度。文章详细介绍了算法原理、Python实现及参数调优指南,并对比了FEC与传统算法的性能差异,为无人驾驶系统开发提供了实用解决方案。

weixin_29065015的博客 487

在电脑上使用讯飞有声,通过python自动化朗读

安装工具 1、安装夜神模拟器 2、在模拟器上安装讯飞有声和clipper clipper下载地址:https://github.com/majido/clipper/releases/download/v1.2.1/clipper.apk 安装完成如下: 编写脚本 1、编写python脚本,将复制文字通过adb传入android模拟器 import pyperclip ...

u011181882的专栏 2945

用ESP32和HomeSpan自制HomeKit智能灯,手把手教你从零接入苹果家庭App

本文详细介绍了如何使用ESP32开发板和HomeSpan开源库自制原生HomeKit智能灯,从硬件搭建到软件配置,再到通过苹果家庭App控制的全过程。项目绕过了苹果MFi认证,成本低廉但功能完整,支持Siri语音控制、自动化场景等高级功能,是智能家居DIY的实用指南。

weixin_28717431的博客 323

2019年高教社杯全国大学生数学建模竞赛 C 题:《机场的出租车问题》真题解析与 MATLAB 解决方案

🏆 本文已收录于专栏:《滚雪球学数学建模(含历年真题)》,持续更新最新及历年数学建模竞赛资料,每篇内容力求做到“问题讲透、模型讲清、代码可用、论文可参考”,帮助你从零开始逐步建立完整的数学建模知识体系。

**My Coding Family** 3455

Python自动化办公,《超简单,用Python让Excel飞起来》三部曲!

这三本书一个系列,从零基础教会python辅助excel办公地全过程。电子版书籍已经打包好,还有40个python自动化办公地示例教程视频。感兴趣的小伙伴,电子书和全套Python学习资料免费赠送,具体看这里。

qq_41314882的博客 1414

Python爬虫实战:全方位解析前程无忧(51job)职位详情爬取及反爬破解

平台规模:覆盖全国各行业、数百万条岗位信息。数据特点:职位描述详细,职位标签丰富。数据价值:支持招聘趋势分析、职业发展研究、薪资行情调研。推荐Python 3.10+,支持最新async特性与库兼容。

2201_76125261的博客 1488

基于讯飞接口的语音识别(python)

基于讯飞平台的实时语音识别

m0_55371741的博客 1万+

硅电容的工艺结构原理及选型参数总结

硅电容,也称为硅质电容或硅二极管电容,是一种特殊的电容器。它利用硅二极管的结构来实现电容的功能。本文对硅电容的工作原理,结构特点,选型参数及设计注意事项进行总结。

fydar的博客 2333

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

《基于Python的UDP协议:解锁飞秋通讯新方式》

(1)最关键的是局域网用户列表的建立;飞秋启动时使用UDP协议向255.255.255.255这个广播地址发送广播包,默认端口是2425。广播包内容包含用户名、工作组、主机名、IP等信息;已启动飞秋的用户通过2425端口收到此广播包后,就会在自己的用户列表中添加这个用户的用户名、工作组等信息,同时向对方IP发送本机用户的个人信息;从而双方都能建立起用户列表;(2)刷新用户列表时发送的广播包和启动时差不多,只不过返回的标识信息略有不同;可以做一个小工具,监控2425端口内存流,就能截获刷新和聊天时的消息。

乐茵安全 1779

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python 游戏辅助lol_一个基于python的自动玩游戏辅助

文章目录一、背景场景分析二、方案选择方案对比:三、设计思路四、代码撸起来五、工具效果我的心得一、背景业余时间我会玩一玩游戏,然而并不是所有所有的游戏内容都会让我一直保持着兴趣。一段时间后,懒癌就犯了……场景分析我玩的游戏是一个叫做“火影忍者Online”的网页游戏,几乎所有的操作都可以通过鼠标进行操作。我对该游戏中能够进行自动完成任务的场景进行了分析。如下图:其实该游戏提供了一种“键鼠记忆”的功能...

weixin_39866487的博客 2349

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

python实现语音识别(讯飞开放平台)

通过电脑麦克风说话,在线进行语音识别

weixin_48434899的博客 7714

python朗读文字报错_在电脑上使用讯飞有声,通过python自动化朗读

安装工具1、安装夜神模拟器2、在模拟器上安装讯飞有声和clipperclipper下载地址:https://github.com/majido/clipper/releases/download/v1.2.1/clipper.apk安装完成如下:编写脚本1、编写python脚本,将复制文字通过adb传入android模拟器```import pyperclip as pyperclipimport...

weixin_39684995的博客 265

python中文朗读_在电脑使用讯飞有声,通过python自动化朗读

安装工具1、安装夜神模拟器2、在模拟器上安装讯飞有声和clipper安装完成如下:编写脚本1、编写python脚本,将复制文字通过adb传入android模拟器import pyperclip as pyperclipimport reimport subprocess# 获取电脑剪切板内容data = pyperclip.paste()# 过滤一些特殊字符和文章声明data = re.sub(r...

weixin_39854681的博客 451

Python:还搁这自己玩连连看呢?看我如何全程自动不需要你动

人生苦短,我用python序言直接上代码全部代码 序言 最近女朋友在玩连连看,玩了一个星期了还没通关,真的是菜。 我实在是看不过去了,直接用python写了个脚本代码,一分钟一把游戏。 快是快,就是联网玩容易被骂,嘿嘿~ 直接上代码 模块导入 import cv2 import numpy as np import win32api import win32gui import win32con from PIL import ImageGrab import time import random 窗体

人生苦短, 还不用Python? 1万+
上一篇: 一篇文章带你多方面采集完一个应用评论、视频并自动点赞、评论~
下一篇: 美女如何无水印下载?python带你批量采集(含完整源码)
魔王不会哭
博客等级 码龄5年 6003粉丝 394原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值