如何处理while循环中的if语句 - Python

问题描述

我正在为我自己的游戏创建一个游戏机器人,在这个(附图在下面)游戏中,这个棒子会随机转身然后转身离开。同时,如果他的话,我可以使用点击按钮来偷他的钱当你点击按钮时,游戏就会结束。

我想要执行的是,使用 pyautogui 获取其前额的 x,y 值和 RGB 的像素 R 值,如果它匹配其前额的 R 值,我将执行鼠标点击。如果没有也一样。

我遇到的问题是,当我尝试运行以下脚本时,它运行良好,但鼠标单击事件被触发了不止一次。


    import keyboard
    import pyautogui
    
    while not keyboard.is_pressed('q'):
        if pyautogui.pixel(687,144)[0] != 255:
            print("Looking at you")
            pyautogui.click(681,662)
        else:
            print("Not looking at you")
            pyautogui.click(681,662)

我用以下方式尝试了带有 bool 变量的 on 脚本,但是一旦这些变量变成了 看着你 不看着你,它只会一次工作false 之后程序无法运行。


    import keyboard
    import pyautogui
    
    
    boolval1=True
    boolval2=True
    
    while not keyboard.is_pressed('q'):
        if pyautogui.pixel(687,144)[0] != 255:
            if boolval1:
                print("Looking at you")
                pyautogui.click(681,662)
                boolval1 = False
        else:
            if boolval2:
                print("Not looking at you")
                pyautogui.click(681,662)
                boolval2 = False

有没有办法每次这个火柴人转身离开时我只能点击一次??

这里我附上了游戏的草图,以得到一个简要的想法

enter image description here

解决方法

您是否尝试过将代码包装在无限循环中

while True:
    # do stuff with is pressed and clicks

只是一条建议,但我认为您应该查看 MVC 设计模式, 之后这将是一团糟:

        if pyautogui.pixel(687,144)[0] != 255: