无尽的循环和旧的删除代码(弹出窗口)......好“弹出”。

问题描述 投票:0回答:1

我正在努力解决自从开始在多个项目中使用Sikuli之后我一直遇到的一个奇怪问题。我一直在使用IDE,后来由于代码发生了奇怪的事情而试图分支出来。如果我之前使用弹出窗口调试代码,我可以保存代码,甚至重新启动我的电脑,甚至检查其他文本编辑器中的代码,但现在不存在的弹出窗口(和旧代码)有时,好吧,弹出。最后通常我最终会放弃原始文件,并且有时会奇怪地注释掉行并一次重新添加它们(即使在大规模的事情中,结束脚本与我之前完成的所有相同) 。我真是亏本。

这让我很难区分坏代码和其他地方出错的地方。有谁知道这可能会导致这个“幽灵代码”?因为我真的很茫然。

而且我想建议我什么时候出错<(inputvariable)。我无法弄清楚可能会出现什么问题,我是不是在寻找什么?

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

对于while循环,它与“SSLoops”进行比较时,我无法理解为什么它在符合条件时不会脱离循环。 (打印出数字之上和之外。)

我不得不做一些奇怪的解决方法,例如评论整段代码,试图让它工作,然后慢慢地逐一重新引入它,直到它完全匹配旧脚本。如果我将脚本复制到一个新文件以制作一个更清晰的副本,希望如果有某种缓存问题(?)它会解决,但我通常不得不再次修补它。

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()

我一直在弹出窗口说“嘿”,因为我有一个循环,而真正的btnRewards运行一个函数说“嘿” - 这将有希望在最后从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
====
python jython sikuli-ide sikuli-x
1个回答
0
投票

你的问题:input()返回一个字符串,如此“4”

然后你用while i < SSLoops:比较它

这总是True因此循环不会结束。

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

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

建议:调试打印应如下所示:print“SSLoops =”,SSLoops

所以输出更易读。

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

© www.soinside.com 2019 - 2024. All rights reserved.