in wrapper return wrappedFunction(*args, **kwargs)

in wrapper return wrappedFunction(*args, **kwargs)
PS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
1

Cześć,

bawię się hobbistycznie w pythonie, aktualnie próbuję napisać prosty skrypt do gry, niestety napotkałem problem z którym nie mogę sobie poradzić:

Kopiuj
import pyautogui
import time

def center_finder(path):
    location = pyautogui.locateCenterOnScreen(path)
    if location is not None:
        return location
    else:
        return None

def main():
    while True:
        detectEnemy1 = center_finder("drzewiec.png")

        if detectEnemy1 is not None:
            pyautogui.press("3")
            time.sleep(1)

        detectEnemy2 = center_finder("skalny.png")

        if detectEnemy2 is not None:
            pyautogui.press("2")
            time.sleep(1)

if __name__ == "__main__":
    main()

błąd to :

Kopiuj
Traceback (most recent call last):
  File "C:\Users\pat\PycharmProjects\PythonProject\.venv\Lib\site-packages\pyautogui\__init__.py", line 172, in wrapper
    return wrappedFunction(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\pat\PycharmProjects\PythonProject\.venv\Lib\site-packages\pyautogui\__init__.py", line 204, in locateCenterOnScreen
    return pyscreeze.locateCenterOnScreen(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\pat\PycharmProjects\PythonProject\.venv\Lib\site-packages\pyscreeze\__init__.py", line 447, in locateCenterOnScreen
    coords = locateOnScreen(image, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\pat\PycharmProjects\PythonProject\.venv\Lib\site-packages\pyscreeze\__init__.py", line 405, in locateOnScreen
    retVal = locate(image, screenshotIm, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\pat\PycharmProjects\PythonProject\.venv\Lib\site-packages\pyscreeze\__init__.py", line 383, in locate
    points = tuple(locateAll(needleImage, haystackImage, **kwargs))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\pat\PycharmProjects\PythonProject\.venv\Lib\site-packages\pyscreeze\__init__.py", line 257, in _locateAll_opencv
    raise ImageNotFoundException('Could not locate the image (highest confidence = %.3f)' % result.max())
pyscreeze.ImageNotFoundException: Could not locate the image (highest confidence = 0.303)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\pat\PycharmProjects\PythonProject\początki.py", line 29, in <module>
    main()
  File "C:\Users\pat\PycharmProjects\PythonProject\początki.py", line 15, in main
    detectEnemy1 = center_finder("drzewiec.png")
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\pat\PycharmProjects\PythonProject\początki.py", line 6, in center_finder
    location = pyautogui.locateCenterOnScreen(path)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\pat\PycharmProjects\PythonProject\.venv\Lib\site-packages\pyautogui\__init__.py", line 174, in wrapper
    raise ImageNotFoundException  # Raise PyAutoGUI's ImageNotFoundException.
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pyautogui.ImageNotFoundException

Process finished with exit code 1

Szukałem na anglojęzycznych stronach: reinstalowałem biblioteki pillow, pyautogui...
ma ktoś jakieś pomysły?

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
0

To na pewno cały błąd? Wygląda jakbyś wkleił tylko końcówkę błędu.

PS: @Patryk Szulc Zerknij na dół wiadomości o błędzie. Jest tam dokładna informacja.

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
1

@Patryk Szulc W path którą podajesz nie ma obrazka. Zobacz czy wszystko ok na dysku.

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8487
1

i czy faktycznie w prawidłowym katalogu szuka.

pyscreeze.ImageNotFoundException: Could not locate the image (highest confidence = 0.303)

BTW dlaczego highest confidence = 0.303? To ta biblioteka tylko się domyśla, że obrazka nie ma?

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
0

A, dobre pytanie, to chyba się myliłem, z tego co widzę, to ta funkcja szuka czegoś na ekranie (?), i chyba nie znajduje.

PS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Ścieżka do screenów jest prawidłowa, na dysku są owe screeny.
Prędzej miałem takie coś:

import pyautogui
import time

time.sleep(2)

def center_finder(path, confidence=0.9):
x, y = pyautogui.locateCenterOnScreen(f"{path}", confidence=0.9)

return x, y

def main():
x, y = center_finder("drzewiec.png")
pyautogui.press('3')

time.sleep(1)

x, y = center_finder("skalny.png")
pyautogui.press('2')

time.sleep(1)

if name == "main":
main()

działało ładnie, jak zlokalizowało w walce "drzewiec" , ale jeśli wystąpił "skalny" wtedy wywalało błąd
chciałem to przerobić gdyby nie znalazł "drzewiec" sprawdzał dalej czy jest może "skalny"
lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
0

Ale to rzuca wyjątek, w takim razie musisz go złapać i próbować "skalny".

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
0

Coś takiego:

Kopiuj
def main():
    try:
        x, y = center_finder("drzewiec.png")
    except yautogui.ImageNotFoundException:
        x, y = center_finder("skalny.png")

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.