In Python kann man PyAutoGUI verwenden:
import pyautogui
import time
def waitAndClickColor(color):
while True:
s = pyautogui.screenshot()
for x in range(s.width):
for y in range(s.height):
if s.getpixel((x, y)) == color:
pyautogui.click(x, y)
return
time.sleep(0.5)
waitAndClickColor((255, 0, 0)); # suche nach Rot
waitAndClickColor((0, 255, 0)); # suche nach Grün
waitAndClickColor((0, 0, 255)); # suche nach Blau
In der Funktion waitAndClickColor(color) wird die while True-Schleife solange wiederholt, bis die Farbe auf dem Bildschirm gefunden wird. pyautogui.screenshot() erstellt ein Bildschirmfoto. In den beiden for-Schleifen werden alle Pixel durchlaufen. s.getpixel((x, y)) gibt die Farbe des Pixels an den entsprechenden Koordinaten zurück. Falls das Pixel eine bestimmte Farbe hat, wird an der Stelle ein Klick ausgeführt. time.sleep(0.5) verzögert die nächste Schleifenausführung um eine halbe Sekunde.
Wenn nur an einer bestimmten Stelle die Farbe geprüft werden soll, kann man Folgendes schreiben:
import pyautogui
import time
def waitAndClickColor(x, y, color):
while not pyautogui.pixelMatchesColor(x, y, color):
time.sleep(0.5)
pyautogui.click(x, y)
waitAndClickColor(300, 200, (255, 0, 0)); # warte bis rot
waitAndClickColor(200, 300, (0, 255, 0)); # warte bis grün
waitAndClickColor(400, 500, (0, 0, 255)); # warte bis blau
pyautogui.pixelMatchesColor(x, y, color) überprüft, ob das Pixel an der angegebenen Position eine bestimmte Farbe hat. Das Programm wartet, bis die Farbe dort erscheint, und klickt an der Stelle.
Siehe dazu:
- https://stackoverflow.com/questions/61271147/locate-color-position-on-screen
- https://www.reddit.com/r/learnpython/comments/rao5ht/wait_until_pixelcoords_certain_color/