无休止的 while 循环和旧的删除代码(弹出窗口)...好吧 "popping up."

Endless while loop and old removed code (popup)... well "popping up."

我正在努力解决自从开始在多个项目中使用 Sikuli 以来一直遇到的 st运行ge 问题。我一直在使用 IDE,后来由于代码中发生了 st运行ge 事情而尝试 b运行ch out。如果我之前用弹出窗口调试代码,我可以保存代码,甚至重新启动我的电脑,甚至检查其他文本编辑器中的代码,但现在不存在的弹出窗口(和旧代码)有时会弹出。最后通常我最终会放弃原始文件,有时不得不 st运行gely 注释掉行并一次重新添加它们(即使在 g运行d 规模的事情中结束脚本和我之前做的一样)。我真是不知所措。

这让我难以区分糟糕的代码和其他地方出现的问题。有谁知道是什么导致了这个 "phantom code"?因为我真的很茫然。

我想知道 while i < (inputvariable) 出了什么问题。我根本不知道可能出了什么问题,我是不是在看东西?

我现在运行正在通过 Sikuli IDE 安装所有脚本。我确实想学习如何编写脚本并包括 sikuli,希望我可以将它整齐地打包,但我似乎无法全神贯注。

对于 while 循环,将它与 "SSLoops" 进行比较,我不明白为什么它在满足条件时不跳出循环。 (打印出超出数字的部分。)

我不得不采取 st运行ge 解决方法,例如注释掉整段代码,尝试让它工作,然后慢慢地一个接一个地重新引入它,直到它与旧脚本完全匹配.如果我将脚本复制到一个新文件以制作一个更干净的副本,希望如果存在某种缓存问题(?)它会解决,但我通常不得不再次修改它。

BP = getBundlePath()
print(BP)
setBundlePath(BP + "\images")
BP2 = getBundlePath()
print(BP2)

# Regions
gameRegion = Region(230, 138, 1442, 875)
matchSpeedRegion = Region(1282, 920, 162, 91)
rewardRegion = Region()


def main():
    SSLoops = input("How many times would you like to run Super Smash?")
    SuperSmash(SSLoops)


def SuperSmash(SSLoops):
    print(SSLoops)
    i = 1
    while i < SSLoops:
        print(i)
        print(SSLoops)
        if exists("btnEnterSuperSmash.PNG"):
            click("btnEnterSuperSmash.PNG")
        while True:
            if exists("btnReward.png"):
                print("Completed! On to Rewards.")
                #selectRewards()
                break
            else:
                pass
            if matchSpeedRegion.exists("btnStart.png"):
                matchSpeedRegion.click("btnStart.png")
                matchSpeedRegion.wait("btnRetreat.png", 3600)
                if matchSpeedRegion.exists("btnSpeedUp.png"):
                    matchSpeedRegion.click("btnSpeedUp.png")
                    print("clicked x1")
                print("clicking retreat")
                matchSpeedRegion.click("btnRetreat.png")
                matchSpeedRegion.wait(Pattern("btnRetreat.png").similar(0.65), 3600)
                print("clicking okay")
                gameRegion.click("btnOK.png")
                wait(2)
                gameRegion.wait("btnOK.png", 3600)
                gameRegion.click("btnOK.png")
        print("Completed!")
        i = i + 1


if __name__ == '__main__':
    main()

我一直收到弹出窗口说 "hey" 因为我有一个循环 while true btnRewards 到 运行 一个说 "hey" 的函数 - 这有希望继续选择一个最后奖励 5 张图片。但是在删除它之后,当我试图对主循环进行故障排除时,它仍然会弹出。

将用户输入变量与 i 进行比较的循环一直在增加。我觉得缩进没问题?但我一定是错的?还是其他原因导致它出错?

我一直在一个文件夹中制作程序运行,所以打破循环的图片会立即出现,所以理论上它应该运行没有任何其他输入的次数( 1).非常感谢任何帮助。

====
1
1
1

[log] CLICK on L[889,656]@S(0) (568 msec)

Completed! On to Rewards.

Completed!
2
1

[log] CLICK on L[889,656]@S(0) (565 msec)

Completed! On to Rewards.

Completed!
3
1

[log] CLICK on L[889,656]@S(0) (584 msec)

Completed! On to Rewards.

Completed!
4
1
====

你的问题:input() returns 像这样的字符串 "4"

你然后用 while i < SSLoops:

始终是 True,因此循环不会结束。

正在使用 SSLoops = int(input("How many times would you like to run Super Smash?")) 将解决您的问题。

注意:如果给定的输入无法转换为整数值,这将崩溃。

建议:调试打印应如下所示: 打印 "SSLoops ="、SSLoops

所以输出更易读。

来自 SikuliX 的 RaiMan(向你的猫问好 ;-)