0

複数のプロジェクトで Sikuli を使い始めて以来、奇妙な問題のトラブルシューティングに苦労しています。私はIDEを使用してきましたが、コードで奇妙なことが起こったため、後で分岐しようとしました。以前にポップアップを使用してコードをデバッグした場合、コードを保存したり、PC を再起動したり、他のテキスト エディターでコードを確認したりできますが、現在は存在しないポップアップ (および古いコード) がポップアップすることがあります。結局、通常、元のファイルを捨ててしまい、奇妙なことに行をコメントアウトして、一度に1行ずつ追加し直す必要があります(大規模なものでは、終了スクリプトは以前と同じでしたが、すべてを行いました) . 本当に言葉を失います。

悪いコードと他の場所で何かがうまくいかないことを区別するのに苦労しています。この「ファントムコード」の原因を知っている人はいますか? 私は本当に途方に暮れているからです。

そして、while i < (inputvariable) の何が問題なのかについてアドバイスをお願いします。何が問題なのかまったくわかりません。何か見落としていますか?

現在、すべてのスクリプトを Sikuli IDE で実行しています。スクリプトの書き方を学びたいと思っていましたが、きちんとパッケージ化できることを願って sikuli を含めましたが、頭を包むことができなかったようです。

「SSLoops」と比較されているwhileループについては、基準が満たされたときにループから抜け出さない理由がわかりません。(番号の上と後ろに印字されます。)

コードのセクション全体をコメントアウトし、それを機能させようとしてから、古いスクリプトと完全に一致するまでゆっくりと 1 つずつ再導入するなど、奇妙な回避策を講じる必要がありました。スクリプトを新しいファイルにコピーしてよりクリーンなコピーを作成した場合、何らかのキャッシュの問題 (?) があれば解決されることを期待していますが、通常はもう一度いじる必要があります。

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 で「ちょっと」と言う関数を実行するループがあったため、「ちょっと」というポップアップが表示されました。しかし、それを削除した後、メインループのトラブルシューティングを試みているため、まだポップアップします。

ユーザー入力変数を 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
====
4

1 に答える 1