import keyboard
import time
import numpy as np
from mss import mss
import pyautogui as pg
monitor = {
"left": 5,
"top": 30,
"width": 967,
"height": 686,
}
def find_color(target_color, monitor):
m = mss()
img = m.grab(monitor)
img_arr = np.array(img)
target_map = (target_color[2], target_color[1], target_color[0], 255)
indexes = np.where(np.all(img_arr == target_map, axis=-1))
return np.transpose(indexes)
def perform_click_action(x, y, key=None):
pg.click(x, y)
if key:
time.sleep(1.2)
pg.press(key)
priority_color = (255, 0, 0)
our_color = (66, 66, 255)
while True:
result_priority = find_color(priority_color, monitor)
if result_priority.size > 0:
x = result_priority[0][1] + monitor['left']
y = result_priority[0][0] + monitor['top']
perform_click_action(x, y, key='q')
continue
result_our_color = find_color(our_color, monitor)
if result_our_color.size > 0:
x = result_our_color[0][1] + monitor['left']
y = result_our_color[0][0] + monitor['top']
perform_click_action(x, y, key='enter')
time.sleep(3)
import time
import numpy as np
from mss import mss
import pyautogui as pg
monitor = {
"left": 5,
"top": 30,
"width": 967,
"height": 686,
}
# Поиск цвета на экране
def find_color(our_color, monitor={}):
# Возмём кусок экрана
m = mss()
# Получаем пиксель с экрана монитора
img = m.grab(monitor)
# Преобразуем этот пиксель в матрицу
img_arr = np.array(img)
# Поиск цвета (b, g, r, alpha)
our_map = (our_color[2], our_color[1], our_color[0], 255)
indexes = np.where(np.all(img_arr == our_map, axis=-1))
our_crd = np.transpose(indexes)
return our_crd
# Искомый цвет
our_color = (66,66,255)
while True:
result = find_color(our_color, monitor)
if result.__len__():
x = result[0][1] + monitor.get('left')
y = result = [0][0] + monitor.get('top')
pg.click (x, y)
pg.moveTo(x, y)
pg.press ('enter')
# Ожидание
time.sleep(3)
как сюда добавить другой цвет и чтоб тот цвет был приоритнее our_color = 66,66,255
и когда его находит выполняло действия
pg.click(x, y)
time sleep(1.2)
pg.press ('q')
и после их выполнения опять запускался поиск цвета our_color = 66.66.255
подскажите