如何正确搜索和随机点击多个图像pyautogui?



我最初的python课程之一通过在特定坐标使用pyautogui.click来自动执行简单的cookie点击游戏。我试图通过使用locateonscreen图像函数和random模块来定位图像,然后在图像中随机单击,因为我认为这对我的学习更实用,更像人类。

当图像被找到-一切工作。当没有找到图像时-我得到一个AttributeError: 'NoneType' object has no attribute 'left',因为在这种情况下我的盒子不存在。我正在寻找帮助编程的逻辑,试图找到和想象,如果它发现它随机点击它,否则尝试找到下一个图像。

这是我的工作,当图像存在:while坐标是单击静态位置,然后在计数器到达某一点后查找并随机单击图像。然后返回到静态位置继续点击和循环。

import pyautogui as gui   
import random             
gui.PAUSE = 0.01
gui.moveTo(x=383,y=576)
counter = 1
while gui.position() == (383,576):
gui.click()
counter += 1
if counter % 300 == 0:

def randomClick(box):
x_click = int(random.uniform(box.left, box.left+box.width))
y_click = int(random.uniform(box.top, box.top+box.height))
return (x_click, y_click)
Bank = gui.locateOnScreen('Bank.png')
gui.moveTo(randomClick(Bank))
gui.click() 

def randomClick(box):
x_click = int(random.uniform(box.left, box.left+box.width))
y_click = int(random.uniform(box.top, box.top+box.height))
return (x_click, y_click)
Factory = gui.locateOnScreen('Factory.png')
gui.moveTo(randomClick(Factory))
gui.click() 

def randomClick(box):
x_click = int(random.uniform(box.left, box.left+box.width))
y_click = int(random.uniform(box.top, box.top+box.height))
return (x_click, y_click)
Mine = gui.locateOnScreen('Mine.png')
gui.moveTo(randomClick(Mine))
gui.click()  

def randomClick(box):
x_click = int(random.uniform(box.left, box.left+box.width))
y_click = int(random.uniform(box.top, box.top+box.height))
return (x_click, y_click)
Farm = gui.locateOnScreen('Farm.png')
gui.moveTo(randomClick(Farm))
gui.click()  

def randomClick(box):
x_click = int(random.uniform(box.left, box.left+box.width))
y_click = int(random.uniform(box.top, box.top+box.height))
return (x_click, y_click)
Grandma = gui.locateOnScreen('Grandma.png')
gui.moveTo(randomClick(Grandma))
gui.click()   

def randomClick(box):
x_click = int(random.uniform(box.left, box.left+box.width))
y_click = int(random.uniform(box.top, box.top+box.height))
return (x_click, y_click)
Cursor = gui.locateOnScreen('Cursor.png')
gui.moveTo(randomClick(Cursor))
gui.click()
gui.moveTo(x=383,y=576)

根据pyautogui的版本,当它找不到图像时,它将引发异常或返回None。似乎你的版本返回None,所以你所需要做的就是调用locate函数后,只需检查它是否没有返回None

Bank = gui.locateOnScreen('Bank.png')
if Bank is not None:
gui.moveTo(randomClick(Bank))
gui.click()

还需要注意函数只需要定义一次,因此您应该在程序的最开始只定义一次randomClick。然后你可以任意调用它。

相关内容

  • 没有找到相关文章

最新更新