You need to enable JavaScript to run this app. 使用PYautoGUI开发配对解谜脚本,要求仅点2个相同图为何误点所有匹配图
优惠活动
大模型
产品
解决方案
定价
更多

使用PYautoGUI开发配对解谜脚本,要求仅点2个相同图为何误点所有匹配图

脚本点击逻辑异常原因与修复方案
  • 外层循环未中断:当前代码的break仅作用于内层遍历匹配坐标的for i in found循环,无法跳出外层遍历所有图案模板的for image in images循环。处理完一组配对后,脚本会继续扫描剩余所有模板,只要其他模板匹配到≥2个相同图案,就会再次触发点击,最终连续点击多组目标。
  • 配对目标未做数量限制:没有逻辑限定仅点击当前匹配到的2个配对项,也没有记录已点击/已配对的坐标或图案,导致同一图案的多余匹配项、已消除的残留匹配都会被重复触发点击。
  • 前置检测逻辑失效:粘贴的代码中外层if判断后的for循环未正确缩进,导致TapPair.png的界面状态检测完全失效,无论当前是否处于可配对状态都会持续执行扫描点击。
  • 时序逻辑缺失:配对解谜需要等待第一张卡片翻牌显示图案后再点击第二张,当前代码没有对应等待逻辑,容易因为卡片状态变化(比如未配对卡片翻回背面)导致匹配结果异常,误触多余目标。

修正后参考代码

import pyautogui
import time

# 替换为你实际使用的图案模板列表
images = ["图案1.png", "图案2.png", "图案3.png"]
# 记录已配对的图案与坐标,避免重复处理
processed_data = set()

if pyautogui.locateCenterOnScreen('TapPair.png', confidence=0.9, region=(689, 250, 640, 1000)) is not None:
    for image in images:
        # 跳过已经处理过的图案
        if image in processed_data:
            continue
        
        found = list(pyautogui.locateAllOnScreen(image, confidence=0.99, region=(689, 250, 640, 1000)))
        # 过滤掉已经处理过的坐标
        found = [pos for pos in found if pos not in processed_data]

        if len(found) >= 2:
            # 仅点击前2个匹配的配对项
            for pos in found[:2]:
                pyautogui.click(pos)
                print("Got a match")
                time.sleep(2)
            
            # 标记当前图案与对应坐标为已处理
            processed_data.add(image)
            processed_data.update(found[:2])
            # 处理完当前配对后直接跳出外层模板遍历,避免连续触发其他配对的点击
            break

内容的提问来源于stack exchange,提问作者HGPlays

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 19:24:03