自从开始在多个项目中使用 Sikuli 以来,我一直在努力解决一个奇怪的问题。我一直在使用 IDE,后来由于代码发生奇怪的事情而尝试分支。如果我早先使用弹出窗口调试代码,我可以保存代码,甚至重新启动我的电脑,甚至在其他文本编辑器中检查代码,但现在不存在的弹出窗口(和旧代码)有时会弹出。最后通常我最终放弃了原始文件,并且有时不得不奇怪地注释掉行并一次重新添加它们(即使在大规模的事情中,最终脚本与我之前所做的一切相同) . 我真的说不出话来。
这让我很难区分糟糕的代码和其他地方出错的地方。有谁知道什么可能导致这个“幻象代码”?因为我真的很茫然。
我想就 while i < (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()
我一直在弹出窗口说“嘿”,因为我在 while true 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
====