【发布时间】:2022-11-12 02:02:46
【问题描述】:
我最初的 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)
【问题讨论】: