Изменение Image.Grab.grab (значение) без перепечатывания - PullRequest
0 голосов
/ 05 апреля 2020

Список помог мне создать al oop, который захватывает часть экрана и сравнивает ее с существующим значением RGB. Окончательный код в окончательном редактировании. Полный процесс обучения показан ниже.

Я новичок в кодировании в целом. Я использую пиксели и проверяю значение RGB пикселя, которое объявляет позицию игрока. Но вместо повторного ввода location = ImageGrab.grab (position) я могу изменить положение?

seat0 = (658,848,660,850) #btn
seat1 = (428,816,429,817) #co
seat2 = (406,700,407,701) #hj
seat3 = (546,653,547,654) #lj
seat4 = (798,705,799,706) #bb
seat5 = (769,816,770,817) #sb
btnpos = ImageGrab.grab(seat0)
position = btnpos.load()
btn = (251,0,8)
if position[0,0] == btn:
    print('Button')
elif ????

Так что я хочу изменить seat0 (в imagegrab) на seat1 без повторного ввода кода. Спасибо за помощь

РЕДАКТИРОВАТЬ1: Поэтому я попробовал предложение Маркса, не уверен, что я делаю неправильно.

positie = ["(658,848,660,850)","(428,816,430,818)","(406,700,408,702)","(546,653,548,655)","(798,705,799,706)","(769,816,770,817)"]
btn = (251,0,8)
btnpos = ImageGrab.grab(positie[0])
btncheck = btnpos.load()
btn [0,0] not in positie[0]

Я получаю «ValueError: слишком много значений для распаковки (ожидается 4)»

Я пытаюсь присвоить RGB значение positie [0], и оно должно соответствовать btn. если он не совпадает с btn, он должен проверять положение [1], пока не вернет true.

Edit2:

Спасибо, Марк. Я так плохо разбираюсь в циклах.

positie = [(658,848,660,850),(428,816,430,818),(406,700,408,702),(546,653,548,655),(798,705,799,706),(769,816,770,817)]
btn = (251,0,8)
btnpos = ImageGrab.grab(positie[0])
btncheck = btnpos.load()
for x in positie:
    #btncheck = btnpos.load()
    if btncheck[0,0] ==btn:
        print("positie is BTN")
    else:
        btnpos = (positie[++1])
        print(btnpos)

как мне изменить btnpos с добавлением вместо того, чтобы все заново набирать? Таким образом, он должен взять первый элемент в списке и сравнить его с btn. Если он правильный, он может сломаться, если он неправильный, он должен сравнить btn со вторым элементом в списке. Если это правда, это дает мне позицию. Если false: теперь он печатает список [1] ​​шесть раз. Спасибо за ваше терпение

ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: Спасибо, Марк.

positie = [(658,848,660,850),(428,816,430,818),(406,700,408,702),(546,653,548,655),(798,705,799,706),(769,816,770,817)]
btn = (251,0,8)
counter = 0
max_index = len(positie) - 1

while counter <= max_index:

    btnpos = ImageGrab.grab(positie[counter])
    btncheck = btnpos.load()
    if btncheck[0,0] == btn:
        print("Positie")
        break
    else:
        print("controleert de volgende")
        counter = counter + 1
...