微信小游戏颜色风暴自动化

微信小游戏颜色风暴自动化,第1张

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

微信小游戏颜色风暴自动化

提示:以下是本篇文章正文内容,下面案例可供参考

一、环境

python
opencv
pyautogui

二、代码

代码如下:

'''

Descripttion: 
version: 
Author: 肖发博
Date: 2022-05-16 18:59:35
LastEditors: 肖发博
LastEditTime: 2022-05-16 22:31:36
'''
from unicodedata import name
import pyautogui
import time,math
import cv2

def get_centers(lp_pos,box_nums):
    """get_centers 返回所有颜色方块的中心
    [(x1,y1),(x2,y2),(x3,y3),...]

    :param lp_pos: 颜色显示区域的左上角坐标
    :type lp_pos: (x,y)
    :param box_nums: 颜色区域每行的方块数量
    :type box_nums: int
    """
    step=int(color_region[2]/box_nums)
    centers=[]
    for i in range(box_nums):
        for j in range(box_nums):
            x=lp_pos[0]+step/2+i*step
            y=lp_pos[1]+step/2+j*step
            centers.append((int(x),int(y)))
    return centers
def find_diffrent(lp_pos,box_nums):
    '''
    返回颜色不同点的坐标
    '''

    all_pos=get_centers(lp_pos,box_nums)
    all_colors=[]
    confirmd_color=None
    for pos in all_pos:
        rgb = pyautogui.pixel(pos[0],pos[1])
        all_colors.append(rgb)
    if all_colors[0]==all_colors[1]:
        confirmd_color=all_colors[0]
    else:
        if all_colors[0]==all_colors[2]:
            confirmd_color=all_colors[0]
        else:
            confirmd_color=all_colors[1]
    #print(confirmd_color)
    for i in range(len(all_colors)):
        if all_colors[i]!=confirmd_color:
            return all_pos[i]

def main():
    lp_pos=(color_region[0],color_region[1])#颜色区域左上角坐标需要手动测量
    box_size=481#颜色显示区域的边长
    while True:
        #确定每行的颜色快数量
        img = pyautogui.screenshot('temp.png',region=(lp_pos[0]-8,lp_pos[1]-8, color_region[2]+16, color_region[3]+16))
        img = cv2.imread('temp.png', -1)
        gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        ret, th = cv2.threshold(gray_img, 10, 255, cv2.THRESH_BINARY)
        ret, labels, stats, centroid = cv2.connectedComponentsWithStats(th)
        box_nums=int(math.sqrt(len(stats)-1))#颜色快数量
        
        pos=find_diffrent(lp_pos,box_nums)#找到颜色不同的坐标
        print(pos)
        #自动点击
        pyautogui.moveTo(pos[0],pos[1])
        time.sleep(0.03)
        pyautogui.click()
        time.sleep(0.02)

if __name__=="__main__":
    color_region=(719,223,481,481)#手动确定颜色方框(left,up,wifth,hight)
    main()
三、使用方法

在电脑上进入小游戏颜色风暴

首先确定颜色区域的位置


使用微信截图(Alt+a)或者qq截图(Ctrl+shift+A)确定颜色区域的方框,左上角坐标为前两项,宽度和高度为后两项

修改代码中的color_region

if __name__=="__main__":
    color_region=(719,223,481,481)#手动确定颜色方框(left,up,wifth,hight)
    main()

启动脚本即可

注意

1、脚本路径一定不能含有中文否则opencv不能正常使用会产生报错
2、如果想停止,直接win+D返回桌面程序会自动报错退出

效果展示

在正常模式下满分好像只有50

无尽模式满分没有上限,比较坑的是到300多的时候,位置就确定了,不会改变,所以就能看到鼠标在同一个位置点击。试了一下,感觉没意思到400多就退出了。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/942655.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-18
下一篇2022-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存