【问题标题】:Image class keeps selecting different images instead of identical, how to fix? Sikuli图像类不断选择不同的图像而不是相同的图像,如何解决?西库里
【发布时间】:2016-09-20 23:06:43
【问题描述】:

我正在使用随机 5 张牌洗牌器来掌握一些基本脚本,但脚本会选择 A A 3 或 10 9 8 而不是忽略它们。我怎样才能让它运行得更快?

running = True

def runHotkey(event):
    global running
    running = False

Env.addHotkey(Key.F1, KeyModifier.CTRL, runHotkey)

while exists("1474199877323.png")and running:
    click(Pattern("1474369588947.png").similar(0.80))
    wait(2)
    click("1474138615993.png")
    click("1474138629993.png")
    wait(1)
    imageCount=0
    images = []
    # find all images and store them in a list to prevent additional search
    if exists(Pattern("1474368132347.png").similar(0.90)):
            for image in findAll(Pattern("1474368132347.png").similar(0.89)):  
            wait(1)
            images.append(image)
            #check list length and act accordingly
        if len(images) >= 2:
            wait(1)
            for image in images:
                wait(1)
                image.click()
            click(Pattern("1474409820809.png").similar(0.93))


if exists(Pattern("1474409495397.png").similar(0.91)):
        for image1 in findAll(Pattern("1474409495397.png").similar(0.91)):
            wait(1)
            images.append(image1)
            #check list length and act accordingly
        if len(images) >= 3:
            wait(1)
            for image1 in images:
                wait(1)
                image1.click()
            click(Pattern("1474369529687.png").similar(0.90))

if exists(Pattern("1474410728933.png").similar(0.95)):
        for image2 in findAll(Pattern("1474410728933.png").similar(0.95)):
            wait(1)
            images.append(image2)
            #check list length and act accordingly
        if len(images) >= 3:
            wait(1)
            for image2 in images:
                wait(1)
                image2.click()
            click(Pattern("1474369529687.png").similar(0.90))  

if exists(Pattern("1474411088984.png").similar(0.91)):
        for image3 in findAll(Pattern("1474411088984.png").similar(0.91)):  
            wait(1)
            images.append(image3)
            #check list length and act accordingly
        if len(images) >= 3:
            wait(1)
            for image3 in images:
                wait(1)
                image3.click()
            click(Pattern("1474409820809.png").similar(0.93))


if exists(Pattern("1474411136494.png").similar(0.93)):        
        for image4 in findAll(Pattern("1474411136494.png").similar(0.93)):
            wait(1)
            images.append(image4)
            #check list length and act accordingly
        if len(images) >= 3:
            wait(1)
            for image4 in images:
                wait(1)
                image4.click()
            click(Pattern("1474369529687.png").similar(0.90))

if exists(Pattern("1474411200166.png").similar(0.94)):        
        for image5 in findAll(Pattern("1474411200166.png").similar(0.94)):
            wait(1)
            images.append(image5)
            #check list length and act accordingly
        if len(images) >= 3:
            wait(1)
            for image5 in images:
                wait(1)
                image5.click()
            click(Pattern("1474369529687.png").similar(0.90))    

if exists(Pattern("1474411297233.png").similar(0.94)):        
        for image6 in findAll(Pattern("1474411297233.png").similar(0.94)):  
            wait(1)
            images.append(image6)
            #check list length and act accordingly
        if len(images) >= 3:
            wait(1)
            for image6 in images:
                wait(1)
                image6.click()
            click(Pattern("1474409820809.png").similar(0.93))


if exists(Pattern("1474411373675.png").similar(0.94)):                    
        for image7 in findAll(Pattern("1474411373675.png").similar(0.94)):
            wait(1)
            images.append(image7)
            #check list length and act accordingly
        if len(images) >= 3:
            wait(1)
            for image7 in images:
                wait(1)
                image7.click()
            click(Pattern("1474369529687.png").similar(0.90))

if exists(Pattern("1474411438209.png").similar(0.92)):                    
        for image8 in findAll(Pattern("1474411438209.png").similar(0.92)):
            wait(1)
            images.append(image8)
            #check list length and act accordingly
        if len(images) >= 3:
            wait(1)
            for image8 in images:
                wait(1)
                image8.click()
            click(Pattern("1474369529687.png").similar(0.90))  

if exists(Pattern("1474411516981.png").similar(0.95)):        
        for image9 in findAll(Pattern("1474411516981.png").similar(0.95)):  
            wait(1)
            images.append(image9)
            #check list length and act accordingly
        if len(images) >= 3:
            wait(1)
            for image9 in images:
                wait(1)
                image9.click()
            click(Pattern("1474409820809.png").similar(0.93))                 

if exists(Pattern("1474411592794.png").similar(0.92)):                    
        for imagea in findAll(Pattern("1474411592794.png").similar(0.92)):
            wait(1)
            images.append(imagea)
            #check list length and act accordingly
        if len(images) >= 3:
            wait(1)
            for imagea in images:
                wait(1)
                imagea.click()
            click(Pattern("1474369529687.png").similar(0.90))

if exists(Pattern("1474411644943.png").similar(0.90)):                    
        for imageb in findAll(Pattern("1474411644943.png").similar(0.90)):
            wait(1)
            images.append(imageb)
            #check list length and act accordingly
        if len(images) >= 3:
            wait(1)
            for imageb in images:
                wait(1)
                imageb.click()
            click(Pattern("1474369529687.png").similar(0.90))  

if exists(Pattern("1474411713586.png").similar(0.90)):                    
        for imagec in findAll(Pattern("1474411713586.png").similar(0.90)):
            wait(1)
            images.append(imagec)
            #check list length and act accordingly
        if len(images) >= 3:
            wait(1)
            for imagec in images:
                wait(1)
                imagec.click()
            click(Pattern("1474369529687.png").similar(0.90))                       
else:
    wait(0)

【问题讨论】:

  • 能否请您提供更多上下文并准确解释您要做什么,您期望什么以及实际发生的情况?
  • 寻找脚本以选择出现的任何相同卡片中的 3 个或更多。
  • 这不是答案吗? -> stackoverflow.com/questions/39583103/…

标签: python jython sikuli


【解决方案1】:

如果给定图像在给定相似度下存在多个匹配项,则 sikuli 仅从其中单击一张图像(随机)。因此,如果您想更稳定地点击相似的图像,您需要使用 findAll 函数开发代码,然后对 findAll 函数的匹配结果进行排序并单击其中一个。您可以根据 findAll 后找到的 Match Objects 的坐标对图像进行排序,然后单击排序后的图像之一。

如果你想对每一个找到的Match进行处理(点击),直接遍历findAll的所有输出结果并做action。在这种情况下无需进行排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 2016-05-19
    • 1970-01-01
    • 2021-10-30
    • 2021-12-11
    相关资源
    最近更新 更多