从截图到一键清空Auto-Lianliankan 用 Python 图像识别实现 QQ 连连看秒破【免费下载链接】Auto-Lianliankan基于python图像识别实现的连连看外挂可实现QQ连连看秒破项目地址: https://gitcode.com/gh_mirrors/au/Auto-Lianliankan你有没有过这样的时刻在连连看里盯着满屏方块拼命寻找最后几对匹配倒计时却冷酷地归零功亏一篑Auto-Lianliankan 就是为这种崩溃瞬间而生的——一个基于 Python 图像识别实现的连连看外挂它负责替你睁大眼睛找方块也负责替你果断点下鼠标目标只有一个QQ 连连看秒破整盘一键清空。先把战果摆出来三张截图里的秒破现场在讲任何原理之前我想先让你看看它到底能做到什么程度。下面这三张截图是作者把配置文件里的TIME_INTERVAL点击间隔直接调成0后跑出来的效果场面相当震撼棋盘上铺满白色爆炸特效右上角赫然写着连击 37/37剩余方块0——注意是 0。也就是说一整盘方块都被配对消除了全程没有人动过鼠标。第二张截图里连击 39/39再次刷满屏黄色爆炸特效呈对称状铺开。这恰恰说明程序并不是在瞎点它每次选中的都是当前可连通的正确配对否则不可能打出如此整齐的连击。最后这张更有意思棋盘中央炸出螺旋状闪电特效连击数飙到47/47。把这三张图连起来看你大概能想象出那个画面游戏开局脚本启动几十秒后整盘方块消失全程你只需要端着茶杯在旁边看戏。这就是 Auto-Lianliankan 的日常战绩。它不是魔法而是一条七步通关流水线很多人第一次看到这种自动秒破的效果第一反应是开挂了用了什么黑科技。其实拆开看Auto-Lianliankan 做的事情特别朴素一共就七步像一条小工厂流水线定位窗体——用 Windows API 找到游戏窗口把它顶到最前面截屏——把整个屏幕抓下来交给 OpenCV 读取切片——按照方块的宽高把棋盘区域切成一块一块的小图归类——把长得一样的图案归成一类记一个编号转矩阵——把所有方块从图片翻译成数字矩阵找对——在数字矩阵上跑连连看算法找出可连通的配对点击——模拟鼠标左键依次点掉这一对然后循环。这套流程在入口文件run.py里写得明明白白主流程只有十几行if __name__ __main__: game_pos getGameWindowPosition() # 1. 定位游戏窗体 screen_image getScreenImage() # 2. 截取整块屏幕 all_square_list getAllSquare(screen_image, game_pos) # 3. 切片成小方块 types getAllSquareTypes(all_square_list) # 4. 按图案归类 result np.transpose(getAllSquareRecord(all_square_list, types)) # 5. 转成数字矩阵 autoRemove(result, game_pos) # 6. 循环找对并模拟点击你会发现整个过程里根本没有作弊两个字——没有去读游戏内存没有去改游戏数据它只是把你眼睛能看到的画面换成了计算机能理解的信息然后再替你执行你本来就会做的操作。就像你请了一位蒙着眼但手很稳的代练他看不见游戏却比谁都清楚该点哪里。把图片翻译成数字OpenCV 图像识别的三个关键动作既然要让计算机认识图片那第一步就是解决翻译问题。Auto-Lianliankan 的图像识别核心就是三个动作。动作一切片 内缩去干扰。程序根据配置文件里的MARGIN_LEFT、MARGIN_HEIGHT定位棋盘左上角再按SQUARE_WIDTH × SQUARE_HEIGHT的尺寸用 numpy 数组切片把棋盘切成一个个小方块。有趣的是作者还特意做了内缩处理——用小方块内部的SUB_LT_X / SUB_LT_Y / SUB_RB_X / SUB_RB_Y四个坐标把边缘裁掉一圈因为空白区域的切图边缘往往不一致裁掉外缘能避免干扰。动作二图案归类。每一块小图都要和已记录的类型库比对相同图案归为同一类型。你可能会问为什么空白也算一种类型因为程序把empty.png当作0 号类型单独塞进数组——空白是连连看算法里的通路必须单独标记。动作三数字矩阵。每个方块最后都变成一个数字编号整个棋盘就成了一串二维数组比如11×6的棋盘就是一个11×6的数字矩阵。到这里图片的世界彻底翻译成了计算机的世界。这里还有一个很值得品味的细节empty.png这张图的分辨率是21×25 像素正好等于切片内缩后的小图尺寸26-52130-525。也就是说如果你改了内缩坐标就必须同步替换一张对应大小的empty.png否则程序会直接报错。这种配置和资源强绑定的约束恰恰暴露了它作为学习项目的那种真实感——它不是包装精美的商业软件而是一个工程师手把手教你写出来的作业。能不能连藏在 matching.py 里的两拐角判定图像识别只是看清楚真正决定胜负的是matching.py里的连通算法。连连看的规则大家都很熟两个相同图案之间只能通过不超过两个拐角的空路径相连。这套判定逻辑被作者拆成了四个函数层层递进horizontalCheck/verticalCheck0 拐角也就是水平或垂直直线相连中间全是空白turnOnceCheck1 个拐角想象两个方块在一个 L 形的两端turnTwiceCheck2 个拐角路径像 Z 形或 U 形需要遍历整个棋盘找合适的拐点。入口函数canConnect把这些判断按顺序串起来任何一层通过就立刻放行def canConnect(x1, y1, x2, y2, r): if result[x1][y1] 0 or result[x2][y2] 0: # 空白方块直接排除 return False if result[x1][y1] ! result[x2][y2]: # 图案不同直接排除 return False if horizontalCheck(x1, y1, x2, y2): # 0 拐角水平直连 return True if verticalCheck(x1, y1, x2, y2): # 0 拐角垂直直连 return True if turnOnceCheck(x1, y1, x2, y2): # 1 个拐点L 形 return True if turnTwiceCheck(x1, y1, x2, y2): # 2 个拐点Z/U 形 return True return False这套逻辑本质上和你肉眼看图时想的事情一模一样——只不过你每看一对要花几秒而程序遍历全部方块找一对只需要不到一眨眼的功夫。更妙的是找对和点击是交替进行的每消掉一对棋盘数字矩阵就实时更新下一对的判定永远基于最新局面所以它几乎不会陷入消到最后没路走的死局。3 分钟跑起来环境准备、启动命令与第一盘胜利讲了一堆原理你肯定已经手痒了。别急上手其实非常快满打满算三步。第一步克隆仓库。在命令行执行git clone https://gitcode.com/gh_mirrors/au/Auto-Lianliankan第二步装依赖。项目环境要求不高Python 3.5 及以上再加上 OpenCV、pywin32Windows API 库、PIL屏幕截图库这几个常用包。如果你在 Windows 上安装 OpenCV 时踩坑run.py文件头部就贴心标注了当年验证过的版本号和下载地址照着来基本不会错。第三步跑起来。仓库里随附了一个连连看.rar解压打开里面的游戏等开局之后再运行python run.py然后你就可以放下鼠标了。程序会自动定位窗体找不到会每 5 秒重试一次、置顶窗口、截屏分析、找对消除直到整盘清空。有两个小提醒一是游戏窗口千万别拖出屏幕外程序抓不到屏幕以外的数据二是仓库里开源的配置是针对随附的连连看.rar那款游戏的如果你想把目标换成 QQ 连连看需要自己照着[config.py](https://link.gitcode.com/i/8102295ad1f3352840cde6c5bf0ffeea)的格式重新量一遍对应的偏移和尺寸。想更快更准这份配置调优小清单请收好Auto-Lianliankan 的全部手感几乎都藏在config.py那二十行配置里。我帮你整理成了一张表改哪个参数、有什么效果一目了然参数默认值作用WINDOW_TITLEPictureMatching3游戏窗口标题用于定位窗体TIME_INTERVAL0.5两次点击的间隔秒数越小越快MARGIN_LEFT/MARGIN_HEIGHT100 / 100棋盘相对窗体左上角的偏移H_NUM/V_NUM11 / 6棋盘横向、纵向的方块数量SQUARE_WIDTH/SQUARE_HEIGHT65 / 65单个方块的像素宽高SUB_LT_X/Y、SUB_RB_X/Y5 / 5 / 26 / 30切片内缩区域需与empty.png配套调优思路其实就两条线速度线和适配线。想体验演示级的刺激效果把TIME_INTERVAL压到 0就是文章开头那三张截图的状态日常求稳的话保持在 0.3~0.5 就够用了。换了游戏版本或窗口分辨率优先检查MARGIN_*和SQUARE_*因为这两个参数一错切片位置就全乱了。调整完别忘了跑一次看打印出来的数字矩阵是否和棋盘布局对得上。翻车现场急救常见问题排查清单既然是工具就不可能永远一次成功。我把最容易遇到的几个问题整理成了一份急救清单一直提示定位游戏窗体失败5 秒后重试...多半是窗口标题对不上检查WINDOW_TITLE是否与游戏标题栏完全一致同时记住要先开游戏、再跑脚本。方块识别错乱、连错对基本可以锁定是配置和游戏版本不匹配。先核对MARGIN、SQUARE、H_NUM、V_NUM是否准确再检查empty.png尺寸是否和切片内缩区域配套。鼠标在点但游戏没反应窗口被遮挡或者没被置顶了。别把游戏窗体拖到屏幕外也尽量别让其他窗口盖住它。运行偏慢试着把TIME_INTERVAL调小或者关掉几个后台程序给截屏和计算腾点资源。如果以上都不行最稳妥的办法是回去对照run.py每一步的print输出——作者很贴心地把每个阶段都打了日志从捕获屏幕截图到转置成数字矩阵你能清楚地看到程序卡在了哪一步。写在最后工具无罪边界在心说到这Auto-Lianliankan 的技术含量你已经心里有数了一段不到两百行的run.py一份二十行的config.py一个几十行就讲完连通判定的matching.py却组合出了秒破一整盘的效果。它最打动我的地方不是那个炫酷的战绩而是它把看图和点鼠标这件人人都会的事翻译成了一段计算机能执行的指令——这正是图像识别与自动化最迷人的入门范式。当然越是好用的工具越要守住使用的边界。这个项目开源的目的很明确就是交流与学习请仅用于个人学习研究不要用于商业用途不要在竞技环境中使用也请自觉遵守游戏与平台规则。技术本身是中性的让它发光还是添乱取决于使用它的人。如果你也想亲手体验一把鼠标自己会通关的乐趣或者想拿它当一个绝佳的图像识别学习案例现在就访问项目仓库把代码拉下来跑一局吧。相信看完这份奇迹是怎么发生的你收获的不仅是一次轻松通关更是一整套关于图像识别与自动化的完整思维模型。【免费下载链接】Auto-Lianliankan基于python图像识别实现的连连看外挂可实现QQ连连看秒破项目地址: https://gitcode.com/gh_mirrors/au/Auto-Lianliankan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考