#python #cv2 #pyautogui
Вопрос:
Просто работаю над фермерским ботом и новичком в python. Поэтому я собрал вместе несколько разных работ, которые я видел в видео на YouTube. Бот работает, но определенно кажется, что он мог бы быть более эффективным. Я пытаюсь в основном заставить движение остановиться, когда e.jpg изображение идентифицируется на экране, и пусть оно обрабатывается в течение 10 секунд. Вместо этого игрок перемещается, и если при остановке у него есть шанс на ферму, он все равно будет работать нормально, но я хочу, чтобы он постоянно двигался и останавливался только при идентификации e.jpg
также паузы между движениями дольше, чем я хочу, когда не нахожу e.jpg
Я уверен, что у вас, ребята, будет несколько советов, как навести порядок в моем беспорядке.
Спасибо,
import cv2
import pyautogui
import pydirectinput
import time
import random
from time import sleep
from threading import Thread
pyautogui.PAUSE = 0
#template
template = cv2.imread("e.PNG")
template_gray = cv2.cvtColor(template, cv2.COLOR_RGB2GRAY)
template_w, template_h = template_gray.shape[::-1] #(height, width)
#game window dimensions
x, y, w, h = 500, 400, 850, 650
#wait
sleep(3)
def locatebutton():
while True:
#screenshot
pyautogui.screenshot("image.png"), (x, y, w, h)
image = cv2.imread("image.png")
while True:
image_gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
result = cv2.matchTemplate(
image = image_gray,
templ = template_gray,
method = cv2.TM_CCOEFF_NORMED
)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
#threshold
if max_val >=0.8:
pyautogui.press('e')
time.sleep(10)
image = cv2.rectangle(
img = image,
pt1 = max_loc,
pt2 = (
max_loc[0] template_w,
max_loc[1] template_h
),
color = (0,0,255),
thickness = -1
)
else:
movementall()
def movement1():
#move forward
pydirectinput.mouseDown(button='middle', x=700, y=225)
time.sleep(1)
pydirectinput.mouseUp(button='middle')
locatebutton()
def movement2():
# move left
pydirectinput.mouseDown(button='middle', x=500, y=225)
time.sleep(1)
pydirectinput.mouseUp(button='middle')
locatebutton()
def movement3():
# move left again
pydirectinput.mouseDown(button='middle', x=300, y=225)
time.sleep(1)
pydirectinput.mouseUp(button='middle')
locatebutton()
def movement4():
# move move left again
pydirectinput.mouseDown(button='middle', x=100, y=225)
time.sleep(1)
pydirectinput.mouseUp(button='middle')
locatebutton()
def movementall():
my_list = [movement1, movement2, movement3, movement4]
random.choice(my_list)()
if __name__ == '__main__':
Thread(target = movementall).start()
Thread(target = locatebutton).start()